诸位好,
我在做一个组件的编辑器插件开发,遇到一个问题,
我组件中定义了一个数组,如:
@property({type:[CCObject], visible:true})
arr:CCObject[] = [];
我在inspector插件中,会有一个按钮 想要对它的元素进行操做。
有两种途径修改:
一是通过发消息给Component:
//这是一个inspector中按钮的handler
add_element() {
await Editor.Message.request('scene', 'execute-component-method', {
uuid: pannelThis.dump.value.arr.value,
name: 'add_element',
});
}
//这是在Component中的方法
add_element() {
arr.push(new CCOBject());
}
还有一种是在Inspector中对相关的dump进行操作:
//深克隆一个element
let new_one = JSON.parse(JSON.stringify(pannelThis.dump.value.arr.elementTypeData));
pannelThis.dump.value.arr.value.push(new_one);
现在问题来了,如果在Component里操作,dump不会更新,切换一下Node才会出现;如果在dump里操作,那么增加的数据不会被持久化,切换一下Node那数据又没了。
我觉得在这点上Cocos与Unity做同样操作时有些不同。
我的问题是:
-
- 是否有方法可以使其两者(dump与Component)同步?
-
- 或者有无消息可以互相通知?
-
- 或有无更直接解决方案?
感谢!