SendMessage,BroadcastMessage

简介:



三者比较

image

用于向某个GameObject发送一条信息,让它完成特定功能。
其实本质是调用绑定GameObject里面的Script里面的函数,可以跨语言的,例如Javascript可以调用C#的函数,我已实验成功。
另外,如果GameObject本身有两个脚本,例如“move1”和“move2”,两个脚本内有同名函数例如“moveMe()”,会两个函数都执行一次。

例子:

广播消息

void BroadcastMessage(string methodName, object parameter = null, SendMessageOptions options = SendMessageOptions.RequireReceiver);

void BroadcastMessage(string methodName, SendMessageOptions options);

 

向上发送消息

void SendMessageUpwards(string methodName, SendMessageOptions options);

void SendMessageUpwards(string methodName, object value = null, SendMessageOptions options = SendMessageOptions.RequireReceiver);

 

发送消息

void SendMessage(string methodName, object value = null, SendMessageOptions options = SendMessageOptions.RequireReceiver);

void SendMessage(string methodName, SendMessageOptions options);

 

SendMessageOptions

SendMessageOptions.RequireReceiver //如果没有找到相应函数,会报错(默认是这个状态)

SendMessageOptions.DontRequireReceiver //即使没有找到相应函数,也不会报错,自动忽略

在这个游戏物体上的所有MonoBehaviour上调用名称为methodName的方法。

接收消息的方法可以通过不要参数的方法来选择忽略参数。当选项被设置为SendMessageOptions.RequireReceiver时,如果消息没有被任何一个组件处理,则会打印一个错误。

示例代码

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void ApplyDamage(float damage) {
        print(damage);
    }
    void Example() {
        BroadcastMessage("ApplyDamage", 5.0F);
        SendMessageUpwards("ApplyDamage", 5.0F);
        SendMessage("ApplyDamage", 5.0F);

    }
}

文档资料

Component是一切附加到游戏物体的基类,参见:http://game.ceeger.com/Script/Component/Component.html


本文转自赵青青博客园博客,原文链接:http://www.cnblogs.com/zhaoqingqing/p/3853186.html,如需转载请自行联系原作者

相关文章
|
7月前
|
消息中间件 安全 数据处理
Android之Handler、Message、MessageQueue、Looper详解2
Android之Handler、Message、MessageQueue、Looper详解
88 0
|
7月前
|
Java Android开发
Android之Handler、Message、MessageQueue、Looper详解1
Android之Handler、Message、MessageQueue、Looper详解
57 0
|
消息中间件 存储 项目管理
handler+message【消息机制】
handler+message【消息机制】
181 0
handler+message【消息机制】
|
消息中间件 Java Android开发
Android Handler 机制 - Looper,Message,MessageQueue
Android Studio 2.3 API 25 从源码角度分析Handler机制。有利于使用Handler和分析Handler的相关问题。 Handler 简介 一个Handler允许发送和处理Message,通过关联线程的 MessageQueue 执行 Runnable 对象。
1534 0
|
消息中间件 存储 机器学习/深度学习
【Android】Handler 机制 ( Handler | Message | Looper | MessageQueue )(二)
【Android】Handler 机制 ( Handler | Message | Looper | MessageQueue )(二)
140 0
|
消息中间件 存储 调度
【Android】Handler 机制 ( Handler | Message | Looper | MessageQueue )(一)
【Android】Handler 机制 ( Handler | Message | Looper | MessageQueue )(一)
177 0
|
消息中间件 C++ UED
VC++ SendMessage和PostMessage使用总结
VC++ SendMessage和PostMessage使用总结
496 0
|
消息中间件 Android开发 开发者
Android消息机制-Handler,Message,MessageQueue,Looper
Android的消息是怎样传的?Handler为什么要这么用? 一个简单的例子 import android.os.Handler; import android.
996 0