CocosCreator的脚本基础是Component,而Unity的脚步基础是MonoBehaviour
相对于Creator的Component,个人感觉Unity的MonoBehaviour的设计更好一点。因为我主要做unity开发,做Creator开发时经常要移植unity代码到creator。所以在Creator设计了一套和MonoBehaviour相似的解决方案,方便代码移植。
MonoBehaviour 主要由两大部分组成,GameObject和Transfrom。
所以我在Creator里也设计了一套相似的组件,组件命名为Behaviour,身上挂有GameObject和Transfrom,这两个组件继承Node组件,并且根据Unity版本有的接口进行扩充
如下图
除此之外,还有很多方便易用的接口,如事件回调,下面会一一介绍
如何使用
写一个类继承Behaviour组件就可以了。
比如Player类继承Behaviour
用法1:如何使用transform和gameObject
var player:Player = this.getComponent(Player);
player.gameObject.setActive(true);
player.transform.gameObject.setActive(true);
player.gameObject.transform.gameObject.transform.position = new Vec3(0,0,0);
做过unity开发的朋友是不是很熟悉的写法。
但是功能远不止如此 ,为了和Unity用法相同Transform和GameObject扩充了一些Creator没有的接口
Unity里的gameObject.tag可以用Behaviour.tag代替,这样就可以给对象设置标签了。
Ctreator没提供有查找往上N层父节点的函数,Unity是有的,借助自定义的Transform组件
Creator也可以像Unity一样,transform.getComponentInParent(Player);来获取上上上层节点可能存在的组件。
还可以像这样通过路径获取节点transform.find(“node1/node2/node3/MyGameObject”);
GameObject也可以像Unity的一样,可以快速查找场景里可能存在的某些组件
比如 var player = GameObject.FindObjectOfType(Player);
还有其他的接口就不一一列举了。
用法2:碰撞监听
Creator的碰撞监听,必需先获得碰撞体组件,然后对碰撞体组件进行事件监听
如图
Creator这原始的碰撞监听的用法是不是又长又臭?
再看看Unity的用法
Unity的用法就简洁得多,只需在需要做碰撞回调处理的脚本添加如下图的函数就可以了
所以针对Creator原有的碰撞回调的缺点,在Behaviour组件里也添加了和Unity相同用法的接口
写一个脚本继承Behaviour,然后在脚本里添加如下函数就可以了
这样的写法就简洁很多了。
更多的碰撞回调函数名可以看这里
还提供有和Unity类似的输入组件 Input。
可以参考我以前写的一个帖子 分享一个参考Unity的Input系统写的Creator3.0的Input系统
比如
Ctreator写法
Unity的写法
写法是不是Unity的用法相同?相比比Cocos引擎自带的基于事件监听的输入系统更加方便易用,更人性化?
如何获得该套模仿Unity写的组件
获取途径,打开下面的链接
https://easymapeditor-1258223435.cos.ap-guangzhou.myqcloud.com/v2.0.0/web-mobile/index.html
然后点击菜单 “下载” -> “下载基础前端框架Creator” -> “基础前端框架_v3.5.0
下载完后打开项目,找到下面截图里的组件,拷到你的项目里就可以用了
输入组件可以从这里下载包 Input组件.zip (7.7 KB)
上面的地图编辑器如果感兴趣可以看这里 大型RPG或SLG游戏解决方案,有相关需求的开发者进,有新版“在线地图编辑器”