C# 编程与 Unity 3D:委托、事件与扩展函数的应用
1. 委托与事件基础
在 Unity 3D 中使用 C# 编程时,将大量代码作为整个游戏的中央开关板会变得非常繁琐。委托可以实现很多很酷的技巧,带有泛型类型的委托能实现更多有趣的功能,尤其是事件。事件就像一个容器,可用于存放任意数量的函数。当事件被调用时,所有分配给它的函数都会被调用,这是一种很好的通知机制,能告知另一个函数你所等待的事情已经发生。
1.1 委托与事件的声明
我们通常使用 public void functionName() {//code statements}
这样的声明来定义函数。而委托的声明则根据具体需求,例如 delegate void delegateName();
。下面通过一个基本示例来详细说明。
1.2 基本示例
在 Unity 中启动 Events_Scene
,定位到同名游戏对象上的 Events
脚本。通常, EventHandler
的命名会基于它要处理的事件类型。在了解其用途后,我们再确定更合适的名称。
声明 public delegate void Handler();
是一种类型声明,创建该类型后,会创建变量 HandleDelegate
。为了等待委托被处理,我们创建一个新的 Listener
类,其中有一个函数会被分配给 HandleDelegate <