阁下莫非就是绰号对王之王的对穿肠
小弟读过两年书,尘世中一个迷途小书僮,华安!
虽然我有10000年经验,最近在用3.x,不得不说还是2.x香。
这个我倒是理解,引擎组要兼容3D的东西,node只作为树形结构的搭建和位置旋转缩放的记录没毛病,你说的大小是基于2d来的只有长宽,对3d来说还有个一维高度,如果这个节点只是搭建树形结构用这个大小还是多余的,透明度又和渲染的东西相关,一个空节点又不需要渲染,拆分成单独的UITransform、UIOpacity要啥功能自己往node上加组件。
原因就是组件化,是什么组件做什么事。
unity的GameObject 对比 cocos的node
unity的Transform 对比 cocos的node
unity的RectTransform 对比 cocos的node+UITransform+Widget
unity的GameObject只是一个容器,3d的Transform父子关系+位置+旋转+缩放、2d的RectTransform父子关系+位置+锚点+轴心点+旋转+缩放+宽高+布局
cocos的node容器+父子关系+位置+旋转+缩放,2d的UITransform宽高+锚点,2d的Widget布局
对比后你会发现unity的组件化更彻底,cocos的node集成了2d3d都要用的功能,把不通用的功能剔除去当组件了。
从开发2d游戏来说,这2个引擎你要设置大小其实都要通过组件。
让我想起了论坛里一位老哥的帖子
还有他写的输入管理我现在也在用
哈哈哈,没想到我模仿Unity写的组件还这么受欢迎啊。这也是cocos的代码写法有点麻烦,所以模仿untiy的MonoBehaviour写了一个Creator版的。代码简化了很多。
设置坐标,无论是局部坐标还是世界坐标就是那么方便。
设置物体宽高也是很方便
设置透明度也很方便,无论是以alpha还是opacity
unity经典的gameObject和Transform模式
哪里化简了
有种来自老艺术家的从容 我也要学习一下包一层壳了 
你家组件直接拿到x吗
椰子头哪天api再给你变一变 种好的地又要全部重新犁一遍了 还是套层壳保险点
看代码,设置坐标只需这么设置了。
比如修改x轴的位置为1000;
只需:
this,x = 1000;
如果用creator原本的方式需要这样写
this.node.position = new Vec3(1000,this.node.position.y,this.node.positon.z);
再比如修改节点的宽为1000
只需:
this.width = 1000;
用creator自带的方法是这样写。
var _uiTransform= this._uiTransform = this.node.getComponent(UITransform);
_uiTransform.width = 1000;
相比我封装的写法,是不是代码量少了很多倍。
api改了,我也只是重新调整一下Behaviour脚本里的接口,外部调用的不用修改,根本不影响升级。
我也是这样想 之前把你的帖子收藏了打算学习一波 
当时是先看到你的输入管理 感觉用起来确实方便很多 然后合并成一个inputMgr拿来用了
引擎源码原型:Component.node.position,按照这个原型可以自己定义内容
这只是你自己的习惯,并不是所有人都这样。而且这样增加了函数调用,并不推荐。推荐的做法是自己用个变量保存起来,而不是每次都getComponent
吐槽的人大概是没去详细看看源码
get position 返回的才是引用
getPosition() 返回的不是
官方应该是更建议使用 getPosition(复用的Vec3)
get position 更多的是提供给你用来取值 方便使用,也贴心的装饰为 Readonly 了 还想要什么呢?








