Unity3D游戏开发中的C#事件

本文深入探讨Unity3D游戏开发中C#事件的应用,讲解事件触发、订阅与取消订阅的原理,结合实例展示如何在游戏场景中有效利用事件进行组件间通信,提升代码组织和模块化能力。
摘要由CSDN通过智能技术生成
    现在越来越流行的3D游戏引擎,它支持JavaScript,c#和Boo语言。其中C#有一个内置的事件机制,为了响应一个GameObject的事件分发,你通常要建立一个脚本继承MonoBehaviour并且实现你需要的方法。比如你想对鼠标悬停作出反应,就要创建OnMouseOver方法。通常代码会像这个样子:

  1. void OnMouseOver () {
  2. renderer.material.color = Color.red;
  3. }
复制代码


    但如果想通知另外一个对象响应这个事件(OnMouseOver事件)有两种方式!

    第一种方式是保持另外对象的脚本引用,然后在你的OnMouseOver方法中调用它:

  1. public MyScript myScript;
  2. void OnMouseOver () {
  3. myScript.NotifyMouseOver();
  4. }
复制代码


    这样做没问题,但是不够好。因为需要一直保持另外一个对象的引用,如果想通知多个对象要保持多个引用。代码会变得很乱。

    Messages 消息

    另一个办法是用SendMessage或SendMessageUpwards方法。看上去这是解决问题的最好办法,但是这些方法存在严重的缺陷,以我的观点,你应该尽量不去使用它们。

    这些方法的语法并不灵活,你需要传递一个方法名字的字符串,这样做很容易出错。另外这些方法只能用在同一个对象的附属关系中。换句话说你只能在下面几种情况中调用SendMessage或SendMessageUpwards方法,这些方法的脚本被关联到同一个GameObject中,或者被关联到这个GameObject的祖先关系对象中。

    Events 事件
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值