概述

Unity 的 GameObject 提供了一组消息分发接口,可以在运行时向绑定在该 GameObject 上的所有继承自 MonoBehaviour 的 C# 或 JS 脚本广播函数调用。根据作用范围不同,分为三种:向自身和父级广播、仅自身、以及向自身和子级广播。

三种消息分发方式

  • SendMessageUpwards:作用范围是自身和父级。
  • SendMessage:作用范围仅自身。
  • BroadcastMessage:作用范围是自身和子级。

示例

gameObject.SendMessageUpwards("func1", 100);   //自身和父级
gameObject.SendMessage("func2");                //自身
gameObject.BroadcastMessage("func3");           //自身和子级

参数说明

这些方法最多接收三个参数:

  1. 第一个参数:要调用的函数名。
  2. 第二个参数:传递给目标函数的参数。
  3. 第三个参数:SendMessageOptions,用于指定在找不到目标函数时的行为。

SendMessageOptions

  • SendMessageOptions.RequireReceiver:如果没有找到相应函数,会报错(默认是这个状态)。
  • SendMessageOptions.DontRequireReceiver:找不到目标函数时不报错,静默忽略。