creator自定义组件在属性面板上显示

时间:2024-05-22 15:34:22

creator自定义的组件里边,怎么在编辑器的属性面板上展示呢?

就引擎自带的组件有很多属性,可以写很多值,并在编辑器里实时的反应出来。比如一个枚举类型供开发者选用等等。

本文基于creator3D_v1.0.1版本,当然本文技巧也适用于creator2D,区别不大。

首先creator的官方文档:https://docs.cocos.com/creator3d/manual/zh/scripting/ccclass.html

这里还有一篇文章https://blog.****.net/SitToSeeBloomFade/article/details/82217560

直接上代码:

(1)自定义枚举类型(下拉框实现)

creator自定义组件在属性面板上显示

上图,自定义了一个枚举类型,这样在属性编辑器上就可以展示如下图效果了。

creator自定义组件在属性面板上显示

(2)定义可见属性。

实现效果:比如上图的spacex属性,需要在下拉框选择了grid类型后才有用,那么在选择其他类型的时候不可用,就可以不用显示了。

creator自定义组件在属性面板上显示

(3)属性的set() get(),最想记录的就是这里。

先上一段代码,如下图。

creator自定义组件在属性面板上显示

上图中给_color设置了一个默认值。默认情况下,creator会把默认值属性序列化,序列化后就会将编辑器中设置好的值保存到场景等资源文件中,并且在加载场景时自动还原之前设置好的值。就是说当前脚本在第一次绑定到节点后,_color这个属性的默认值会被序列化,在下次打开的时候会从场景资源文件中反序列化读取值,而不是再读取这个默认值,这也是为什么修改了值并保存之后,关闭掉编辑器,下一次打开编辑器,属性值会是上一次修改的原因。

然后再说说get和set,上述代码定义了一个Color类型变量,然后在属性面板上点击修改颜色时,会先get,然后再set。假如有一次set的时候value为null,那么之后都不会再设置成功了,因为序列化的值为null,反序列化失败后,set就会一直不成功。只有重新创建实例才会正常,所以在set的时候,可以判断一下value是否为null.然后get的时候为null也可以返回指定的默认值。

最重要的是标红的,哈哈。。。