Unity SendMessage的几种模式

//1.发送给自身的所有脚本 (只发给自身所有脚本)
//SendMessageOptions.RequireReceiver //如果没有找到相应函数,会报错(默认是这个状态)
//SendMessageOptions.DontRequireReceiver //即使没有找到相应函数,也不会报错,自动忽略
SendMessage("");
 
//2.发送给自身的所有脚本以及自身父物体,父物体的父物体等身上所有脚本 
//(发给自己和父物体,及父物体的父物体 往上调用)
SendMessageUpwards("");
 
//3.还有发给自己和子物体,及子物体的子物体,往下调用。
BroadcastMessage("");
 
 
Unity引擎中,`UnitySendMessage` 是一种全局函数,它用于向另一个组件或脚本发送消息。这个功能常用于事件驱动的游戏设计或者需要跨组件通信的情况,尤其是在预制件或者单例模式中。 下面是一个基本的使用 `UnitySendMessage` 发送和接收消息的例子: **发送消息(Sender):** ```csharp public class Sender : MonoBehaviour { public void SendHelloMessage(string targetName) { UnityEngine.UI.Button button = GetComponent<UnityEngine.UI.Button>(); if (button != null) { UnitySendMessage("TargetClass", "MethodName", targetName); } } [System.Serializable] private struct MessageData { public string TargetClassName; public string MethodName; public object[] Parameters; } private MessageData messageToSend; // 在Unity编辑器中配置的数据 [SerializeField] private MessageData sendMessage; private void OnValidate() { messageToSend.Parameters = new object[] { sendMessage.MethodName, SendMessageTarget }; } private void SendMessageTarget(string methodName, object parameter) { // 实际的接收方法 ReceiveMessage(methodName, parameter); } } ``` 在这个例子中,`SendHelloMessage` 函数会查找是否存在一个Button组件,并通过 `UnitySendMessage` 发送一条包含目标类名、方法名和参数的消息到指定的组件。 **接收消息(Receiver):** ```csharp [ExecuteInEditMode] public class TargetClass : MonoBehaviour { public void MethodName(string messageFromSender, object param) { Debug.Log($"Received message: '{messageFromSender}' with parameter: {param}"); } } ``` 这里,`TargetClass` 类有一个名为 `MethodName` 的公共方法,当接收到消息时会被调用并处理消息内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值