cocos-engine
cocos-engine copied to clipboard
编辑器方法open-asset,save-asset的优化建议
Use Case
- 建议增加一个方法,可根据urlOrUUID直接保存某个资源而无需传参。
编辑器消息 await Editor.Message.request('asset-db', 'save-asset', urlOrUUID, content); 的描述是,content需要传资源完整内容,这个有点不合理。
例如:我使用 open-asset 消息打开1个预制物,执行某些操作修改了此预制物,然后需要保存。 首先open-asset并不会返回资源的完整内容,其次修改是执行runtime脚本进行的修改,也无法得到修改后的内容,所以我根本没法使用save-asset消息保存此预制物。
(ps: 现在折衷的实现方式是调用 await Editor.Message.request('scene', 'save-scene'), 这样被修改的预制物体就会保存。)
- 通过open-asset打开的预制物,需要延时一段时间才能读取到,这个也不利于开发者操作。
await Editor.Message.request('asset-db', 'open-asset', uuid)
await wait(650) //需要延时一段时间,否则无法读取到选中的节点
let nodes = Editor.Selection.getSelected('node')
let node = findNodeByUuid(director.getScene(), nodes[0]) //遍历场景获取打开的预制物节点
if(!node){
succeed = false
err_list.push({path: path, uuid: uuid})
console.error('---------读取不到选中节点:', path)
continue
}
我的本意是想通过打开1个预制物,然后执行预制物上的脚本修改预制物,但发现打开之后无法立即获取到预制物的节点,必须得延时一段时间,这个是为何,有什么改进方法吗?
Problem Description
Proposed Solution
No response
How it works
No response
Alternatives Considered
Additional Information
No response