Unity中SendMessage/SendMessageUpwards/BroadcastMessage的用法
来源:互联网 发布:suse linux 挂载iso 编辑:程序博客网 时间:2024/05/17 21:57
Unity中不同脚本间传递消息有很多种方式,常见的是GetComponent及其相近的几个方法。本文将介绍用消息推送的方式来传递消息的方法,最后再对二者的优劣进行比较。
传递消息的方法有三个:
public void SendMessage(string methodName, object value = null, SendMessageOptions options = SendMessageOptions.RequireReceiver);public void SendMessageUpwards(string methodName, object value = null, SendMessageOptions options = SendMessageOptions.RequireReceiver);
public void BroadcastMessage(string methodName, object parameter = null, SendMessageOptions options = SendMessageOptions.RequireReceiver);
三个方法的参数是相同的:<1>方法名,<2>方法的参数,<3>是否需要结果信息(默认需要,如果发出的信息找不到相应方法,会输出一个Error,如果选了SendMessageOptions.DontRequireReceiver,那找不到方法是也没有任何提示,慎用。)
三个方法不同之处在于:
<1>SendMessage仅向指定对象的所有脚本推送消息
<2>SendMessageUpwards向指定对象和它的所有父物体推送消息
<3>BroadcastMessage向指定对象和它的所有子物体推送消息
下面在Unity中进行验证:
创建几个物体,关系如下:
创建两个脚本,printname脚本每个物体都挂一个,message脚本挂在Cube(2)上。
//Script printnameusing UnityEngine;public class printname : MonoBehaviour { private void PrintThisName(){ Debug.Log(this.gameObject.name); }}//Script messageusing UnityEngine;public class message : MonoBehaviour {void Start () { SendMessage("PrintThisName"); Debug.Log("**************************"); SendMessageUpwards("PrintThisName"); Debug.Log("**************************"); BroadcastMessage("PrintThisName");}}
开始运行后,结果输出如下:
这跟上面的介绍是完全吻合的。
既然传递消息多种方法,那么那种更好呢?下面对SendMessage和GetComponent两类方法进行简单的比较:
SendMessage:支持private、public方法的消息传递;针对“方法”,可以一次性遍历对象的所有脚本,不需要知道脚本名;要求不同用途的方法在不同脚本中也不能重名,否则极容易出错。
GetComponent:不支持private方法;针对“脚本”,指向性较好,可以针对单个的脚本传递消息;不同脚本之间有重名方法也不会有问题。
通过上述的比较,我们对SendMessage方法和GetComponent方法有了更清晰的认识,在使用过程中可以根据具体需求选用。如果还有疑问,欢迎沟通。
- Unity中SendMessage/SendMessageUpwards/BroadcastMessage的用法
- Unity 3D SendMessage、SendMessageUpwards、BroadcastMessage使用
- U3d中 SendMessage 和 BroadcastMessage 用法
- unity BroadcastMessage的使用
- SendMessageUpwards & SendMessage
- Unity中的SendMessage的用法
- unity中SendMessage的bug – unity3d游戏开发
- sendmessage的用法
- SendMessage 的用法!
- SendMessage的用法。。。
- HTML5 中 postMessage sendMessage 用法
- MFC中SendMessage的用法与相应函数的添加
- MFC中SendMessage的用法与相应函数的添加;
- MFC中SendMessage的用法与相应函数的添加
- MFC中SendMessage的用法与相应函数的添加
- Unity SendMessage
- Unity中SendMessage和Delegate效率比较
- Unity中SendMessage和Delegate效率比较
- NOIP复赛复习(一)常见问题与常用策略
- 解决地址栏传中文参数乱码问题
- 关于微服务的相关内容
- 编写一个学生类(Students)
- SQL数据库连接查询
- Unity中SendMessage/SendMessageUpwards/BroadcastMessage的用法
- 通过案例来学习TCP的MSS、MTU
- day 13 su命令
- 【数据结构】线性结构——插入
- 软件集成接口.序
- LeetCode基础-查找-排序数组二分查找
- hibernate学习笔记
- 解决myeclipse中SVN插件突然消失的问题
- selenium自动化测试资源整理(含所有版本chrome、chromedriver、firefox下载链接)