我试图理解我在MonoBehaviour遇到的令我困惑的事情的内部运作。
要定义一个事件,所有人都需要做void EventName()
void Start()
或void MouseDown()
但是如何将此事件注册到该功能。它通常不是通常的
的事件处理程序class.EventHandler += EventFunction()
似乎也没有您订阅的观察者模式。就像Start
和OnMouseDown
被视为构造函数,它基于命名模式。
那么这样的事件是如何实现的?
答案 0 :(得分:1)
核心Unity引擎不是用C#编写的。它是用C / C ++代码编写的。这样,底层实现比用户在其上编写的C#脚本更快,更优化。
Unity可以让您的托管脚本向本机核心提供指令。 Start
,Awake
,Update
等生命周期事件由此桥接过程专门处理。这就是为什么它们与您过去常常在C#中看到的事件处理程序不同的原因。
这个Unity开发blog post概述了脚本在Unity的现代版本中的工作原理