Her*_*ton 7 c# unity-game-engine
在Unity3d你的MonoBehaviour类,它是所有脚本正常的基类.在实现脚本时,必须实现诸如Awake()或Start()或等方法Update().
然而,这些方法不作为virtual或abstract在MonoBehaviour类这样就可以轻松地override他们.实际上它们根本没有实施.在Moment写的方法是一个新的方法,该类没有事先.
为什么这些方法不作为virtual或abstract基类(MonoBehaviour)?
如果您查看文档,您将看到"消息"部分中列出了所有这些"功能"; MonoBehaviour Doc.
这意味着'函数'(如,Start,OnEnable或Awake),它们不是作为方法实现的,而是作为消息实现的.
现在,MonoBehaviour继承自Behavior,它继承自具有SendMessage方法的Component.该方法基本上调用消息/方法,如果消息/方法存在,则可以选择报告错误.名称message/method的参数是一个字符串,因此它们在那里使用反射.
看起来像Unity在幕后确定是否实现了这些消息,看它是否必须调用它们.据UnityAnswer说:
Unity主要用c ++编写,因此大多数魔法都发生在本机代码中.在编译脚本之后,Unity使用反射来确定您已实现的那些"事件",并记住该类的内容.Unity仅在实现时调用Update/LateUpdate/OnGUI.
因此,简短的回答是,它们不是您必须覆盖的"真实"方法,它们是仅在实现时才被调用的消息.
| 归档时间: |
|
| 查看次数: |
1786 次 |
| 最近记录: |