typescript 的装饰器 get set 定义的类型无法在编辑器上保存值

如题,通过 @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 {}中定义的变量表现一样。