executeInEditMode一般是写在角本上。
但我写了一个相机跟随,需要在调相机角度的时候,要在IDE里面实现看到,这个时候需要executeInEditMode,但我编辑完了以后,就不需要,避免这个目标一动,这个相机乱动。就需要关了executeInEditMode。
问题就来了,这个功能只用在代码里面开关,设计人员调相机,得找技术帮忙开,调完,再关回去,建议官方在脚本这个地方加一个勾,如果脚本写了executeInEditMode,那就有这个勾,这个勾可以也可以开关这个脚本是不是要在IDE里面运行。

你可以先加一个布尔属性,脚本的逻辑根据这个布尔属性是否开启来绕过。这样就能实现你要的功能了。
感谢你的建议,我们会评估一下。
目前只能这样子来。你们可以评估一下,功能并不复杂,我觉得挺实用的。
目前引擎很难对 main loop 进行这种级别的定制。
- 参考一下引擎的 motion streak 之类的组件实现,目前引擎大部分都是暴露一个 preview 变量,然后在 lateUpdate 等函数中判断这个变量即可。
- 或者直接用组件的 enabled 进行开关。
- 或者写一个类似 ExecutionInEditor 的组件,这个组件只负责触发某个回调。在移动相机时添加这个组件并调用主相机 update 之类的接口,移动结束后删除这个组件。
我看了一下motion streak 的写法,就是自己写一个属性叫preview然后在update中加一句return,嗯,怎说呢,味道看起来跟自己定一个属性没有什么区别。
作为一个懒程序,如果每一个
executeInEditMode都在编辑器中,有一个自动的preview,开就有回调,不开就没有回调,这样可以少写代码,这是最理想情况。
@property({ visible: true, serializable: false, editorOnly: true })
private preview: boolean = false;
if (EDITOR && !this.preview) return;
