当前位置: 首页 > news >正文

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

相关文章:

  • Windows网络命令
  • 数据库设计原则
  • UESTC 2014 Summer Training #6 Div.2
  • 堆栈原理
  • C++11 FAQ中文版--转
  • AVC1与H264的差别
  • sql点滴42—mysql中的时间转换
  • EucOne调试
  • 产品经理入职第一个月要做的12件事
  • 【转自ITPUB】SYNONYM关于underlying table权限的小小发现
  • allocator 的用法
  • IOS 绘制图表
  • Array types are now written with the brackets around the element type
  • linux_apache服务知识总结(二)(关于用户的访问控制及编译安装)
  • 特定字符输出及二分搜索 简单面试编程题
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • angular2开源库收集
  • css选择器
  • Facebook AccountKit 接入的坑点
  • httpie使用详解
  • Linux中的硬链接与软链接
  • log4j2输出到kafka
  • Node + FFmpeg 实现Canvas动画导出视频
  • Promise面试题2实现异步串行执行
  • Sass 快速入门教程
  • use Google search engine
  • vue--为什么data属性必须是一个函数
  • 爱情 北京女病人
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 机器学习中为什么要做归一化normalization
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 简单基于spring的redis配置(单机和集群模式)
  • 马上搞懂 GeoJSON
  • 源码安装memcached和php memcache扩展
  • 正则表达式
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • gunicorn工作原理
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​secrets --- 生成管理密码的安全随机数​
  • ​插件化DPI在商用WIFI中的价值
  • (a /b)*c的值
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (二)构建dubbo分布式平台-平台功能导图
  • (规划)24届春招和25届暑假实习路线准备规划
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .net core Swagger 过滤部分Api
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .net反编译工具
  • .NET关于 跳过SSL中遇到的问题
  • .pop ----remove 删除
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(朱雀组)