在 Unity 中,通过 GameObject 提供的三类消息发送方法,可以向挂载在该对象(及其父子级)上的、所有继承自 MonoBehaviour 的 C# 或 JS 脚本广播方法调用。

三种消息发送方式

  • SendMessageUpwards:向自身及其所有父级对象上的脚本发送消息。
  • SendMessage:仅向自身对象上的脚本发送消息。
  • BroadcastMessage:向自身及其所有子级对象上的脚本发送消息。

示例代码

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

三个参数,第一个函数名,第二个参数,第三个是SendMessageOptions.RequireReceiver //如果没有找到相应函数,会报错(默认是这个状态)
SendMessageOptions.DontRequireReceiver

参数说明

这三个方法最多接受三个参数:

  1. 第一个参数是目标函数名(字符串形式)。
  2. 第二个参数是传递给目标函数的实参。
  3. 第三个参数是 SendMessageOptions 枚举,用于控制在目标函数缺失时的行为。

SendMessageOptions 有两种取值:

  • SendMessageOptions.RequireReceiver:如果没有找到相应的函数,会报错。这是默认行为。
  • SendMessageOptions.DontRequireReceiver:即使没有找到相应的函数,也不会报错,静默忽略。