hook unitysendmessage 代码
时间: 2024-10-12 22:14:20 浏览: 21
在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` 的公共方法,当接收到消息时会被调用并处理消息内容。
阅读全文