我正在为Unity编辑器编写自己的autosave脚本,我希望它在编辑器启动时运行它的setup方法。我尝试过使用InitializeOnLoad,但它不仅在编辑器启动时调用静态构造函数,而且在每次按下Play按钮时调用静态构造函数,再次初始化我的脚本并重置其所有计时器。
我尝试在定时器将其值设置为默认值的情况下设置一个条件来初始化脚本,但显然InitializeOnLoad创建了我的脚本的另一个实例,因此所有内容都被重置,并且该条件是无用的。
然后,我考虑在启动时在编辑器首选项中创建一个bool,以检查当我按下Play时,脚本是否已经启动。但是当编辑器关闭时,我找不到重置这个值的方法,所以当我再次启动编辑器时,bool仍然是真的,并且autosave不会启动。
我还尝试使用ExecuteInEditMode调用OnDestroy方法并将编辑器首选项设置为false,但当然只有在场景中有脚本实例附加到GameObject时才有效,而编辑器脚本不是这种情况。
有解决这个问题的方法吗?提前谢谢。
发布于 2017-07-04 19:52:07
在你的静态构造函数中使用这个:
if (!EditorApplication.isPlayingOrWillChangePlaymode) {
//Do constructor stuff
}
https://stackoverflow.com/questions/44904704
复制相似问题