0

我实现了 OnEnable() 并且它总是按预期在播放模式下被调用。但在编辑器模式下,一些组件调用 OnEnable() 而其他组件则不调用

我需要在编辑器模式下调用 OnEnable() 或其他方法来设置组件以便能够对其进行原型设计。

如果我从 UnityEngine.UI.Image 扩展类,则在编辑器模式下调用 OnEnable()。如果我从 MonoBehavior 扩展类,则它不会在编辑器模式下调用 OnEnable(),但仍会在播放模式下调用。

是否有任何说明为什么它被调用或不被调用。

4

2 回答 2

1

MonoBehaviour.OnEnable()当脚本组件被激活时被调用。UnityEngine.UI.Image继承自MonoBehaviour,所以应该没有区别。您可能需要查看Execution Order of Event Functions

如果您希望MonoBehaviour编辑器调用您,您应该为您的类添加一个ExecuteInEditMode属性。

于 2017-03-10T11:54:19.700 回答
0

谢谢。可能是 UI.Image 有那个标志

确切地 !

UI.Image 继承自 MaskableGraphic。 UI.Image继承自MaskableGraphic

MaskableGraphic 继承自 Graphic。 MaskableGraphic继承自Graphic

图形具有 ExecuteInEditMode 并且GraphicExecuteInEditMode国旗!


ps1:@zwcloud 关于ExecuteInEditMode属性是对的!,这个答案是我的两分钱。

PS2; 您可以随时Go the declaration上课并检查代码,这可能非常有趣! 前往申报

于 2017-07-13T16:43:57.543 回答