如题,通过 @property 定义一个getter 和 setter属性,如何让其在编辑器中也效,而不是重新打开场景后,之前设置的值就消失
在脚本的开头这样改一下就行。
const {ccclass, property, executeInEditMode} = cc._decorator;
@ccclass
@executeInEditMode
export default class NewClass extends cc.Component {
更多的 editor 参数介绍请查看文档:
https://docs.cocos.com/creator/manual/zh/scripting/reference/class.html#editor-参数
楼上引擎组的大大理解有误,楼主应该要的是这个:
//重点是这里给_value也加上@property,它是下划线开头,加@property也不会显示到Creator属性面板上
@property()
private _value: number;
@property()
get value(): number {
return this._value;
}
set value(v: number) {
this._value = v;
}
2赞
有你真好
爱你一万年
另外再问下,如何让类里面的方法只在editor中有,发布到游戏中就剔除?例如我自己写的button组件,有个监听状态改变刷新编辑器面板效果的方法不想在发布后存在,那么typescript中应该怎么做?
CC_EDITOR
不是不执行,是正式发布的时候某些方法根本不存在在文件中
在js 写法中,可以在 property {}里定义get,set并且加入其他变量,ts中可以用什么写法达到相同的效果呢?
就是上面你回复引用的我那个写法,注意理解第一行的注释,有@property()装饰的ts变量才会像js的property {}中定义的变量表现一样。