现在越来越流行的3D游戏引擎,它支持JavaScript,c#和Boo语言。其中C#有一个内置的事件机制,为了响应一个GameObject的事件分发,你通常要建立一个脚本继承MonoBehaviour并且实现你需要的方法。比如你想对鼠标悬停作出反应,就要创建OnMouseOver方法。通常代码会像这个样子: 但如果想通知另外一个对象响应这个事件(OnMouseOver事件)有两种方式!
第一种方式是保持另外对象的脚本引用,然后在你的OnMouseOver方法中调用它:
这样做没问题,但是不够好。因为需要一直保持另外一个对象的引用,如果想通知多个对象要保持多个引用。代码会变得很乱。
Messages 消息
另一个办法是用SendMessage或SendMessageUpwards方法。看上去这是解决问题的最好办法,但是这些方法存在严重的缺陷,以我的观点,你应该尽量不去使用它们。
这些方法的语法并不灵活,你需要传递一个方法名字的字符串,这样做很容易出错。另外这些方法只能用在同一个对象的附属关系中。换句话说你只能在下面几种情况中调用SendMessage或SendMessageUpwards方法,这些方法的脚本被关联到同一个GameObject中,或者被关联到这个GameObject的祖先关系对象中。
Events 事件
<
|
Unity3D游戏开发中的C#事件
最新推荐文章于 2024-03-10 12:04:53 发布
本文深入探讨Unity3D游戏开发中C#事件的应用,讲解事件触发、订阅与取消订阅的原理,结合实例展示如何在游戏场景中有效利用事件进行组件间通信,提升代码组织和模块化能力。
摘要由CSDN通过智能技术生成