Unity SendMessage方法
我们今天研究下SendMessage方法, 如果我们需要执行某一个组件的方法时候可以使用SendMessage
| gameObject.SendMessage("A"); | 即可通知当前物体下某组件的A方法 |
| gameObject.SendMessageUpwards("A"); | 通知父物体某组件的A方法,直到查询到根结点结束 |
SendMassge如何传递多个参数:
using UnityEngine;
using System.Collections;
using System; namespace PlateFace
{
public class Test : MonoBehaviour
{
void Awake()
{
gameObject.SendMessage("OnShowInfo", new object[] { "盘子脸1号", "盘子脸2号" }
,SendMessageOptions.RequireReceiver); }
//数据会传入到该方法当中,显示在控制台上面
void OnShowInfo (object [] obj)
{
Debug.Log(obj[]);
Debug.Log(obj[]); }
}
}
GameObject.Find("MainCamera").SendMessage(“Z”),物体有两个A组件,两个Z方法. 使用SendMessage()按组件从上到下顺序查找,
如果找到Z方法并不会终止,继续往下面寻找然后执行全部的Z方法.
GameObject类: (它是密封类不可被继承) 1个GameObject包含多个组件,包含多个子GameObject.是一种树形结构

SendMessage的总结:
1. SendMessage无法向子物体方法传播的
2. 如果在当前物体组件集合没找到方法,报错
3. SendMessage是同步运行
4. 不管方法是什么权限都可以调用
5. 如果子类有方法优先调用, 父类有方法后调用, 两个都没有方法报错
6. SendMessage("A")该游戏物体每一个组件存在A这个方法都会被调用
Unity SendMessage方法的更多相关文章
- C#开发Unity游戏教程之Unity中方法的参数
C#开发Unity游戏教程之Unity中方法的参数 Unity的方法的参数 出现在脚本中的方法,无论是在定义的时候,还是使用的时候,后面都跟着一对括号“( )”,有意义吗?看起来最多也就是起个快速识别 ...
- Unity的SendMessage方法
用法(该对象所有脚本都能收到): gameObject.SendMessage("要执行的方法名"); 通知的另一种实现: gameObject.GetComponent<脚 ...
- 扩展Unity的方法
写更少代码的需求 当我们重复写一些繁杂的代码,或C#的一些方法,我们就想能不能有更便捷的方法呢?当然在unity中,我们对它进行扩展. 对unity的类或C#的类进行扩展有以下两点要注意: 1.这个类 ...
- Unity关于方法事件生命周期官方文档
http://docs.unity3d.com/Manual/ExecutionOrder.html 一.组件运行的基本顺序 下图中创建类的顺序为A,B,C,A1,二运行的结果为A1,B,C,A. 可 ...
- Unity3D——SendMessage方法的使用
SendMessage效率不高,因为每次调用的时候都会去遍历检测自身或者子节点上要调用的方法. 一.方法 GameObject自身的Script SendMessage("函数名" ...
- Unity - 旋转方法
前言 本文梳理了Unity中常用的旋转方法,涉及两大类:Transform.Quaternion. Transform 类 Rotate() 此方法重载多,易理解,在连续动态旋转中较为常用. /* o ...
- 关于C#.WinForm 与 WinApi的SendMessage 方法
介绍: Windows Api 的 SendMessage 该函数将指定的消息发送到一个或多个窗口.此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回.而和函数PostMessage不同,P ...
- Unity Invoke 方法
Invoke() 方法是 Unity3D 的一种委托机制 如: Invoke("a", 5); 它的意思是:5 秒之后调用 a() 方法: 使用 Invoke() 方法需要注意 ...
- Unity获取方法的参数和方法名称
public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext) { Console.Write ...
随机推荐
- 实现jquery EasyUI tabs选项卡关闭图标后载入自己定义事件
当关闭tabs选项卡时,底部footer须要通过javascript又一次定位calcFooter(),怎样实现呢?选项卡上的关闭图标的方法是easyui自带的,calcFooter()写在onClo ...
- 编译U-boot时,make[1]: *** 没有规则可以创建mkimage.o”
执行完make smdk2440_config 对Uboot重行编译怎么会出现这样的错误 make[1]: Entering directory `/home/win/S3-ARM/Part4/ubo ...
- Impala 源码分析-FE
By yhluo 2015年7月29日 Impala 3 Comments Impala 源代码目录结构 SQL 解析 Impala 的 SQL 解析与执行计划生成部分是由 impala-fronte ...
- .NET基础拾遗(4)委托和事件1
一.委托初窥:一个拥有方法的对象 (1)本质:持有一个或多个方法的对象:委托和典型的对象不同,执行委托实际上是执行它所“持有”的方法. (2)如何使用委托? ①声明委托类型(delegate关键字) ...
- Sublime Text3 Package Control和Emmet插件安装方法
因为初学前端,所以今天安装了Sumblime Text 3,然后就停不下来去找Package Control的安装方法. 网络上我找到并尝试过的方法有两种,我使用的是用Python代码去安装并成安装成 ...
- C#中DataTable转化JSON
[WebMethod(Description = "将一个DataTable对象转化成JSON")] public string GetJSON() { JavaScriptSer ...
- iOS 关于时间戳的一些细节
最近遇到一个bug,在iPhone上获取当前的时间戳,没有问题,而用iPad来测试的时候,出现了时间戳不对.当时的代码 (需要精确到毫秒,所以*1000) NSTimeInterval t = [[N ...
- vc中调用Com组件的方法详解
vc中调用Com组件的方法详解 转载自:网络,来源未知,如有知晓者请告知我.需求:1.创建myCom.dll,该COM只有一个组件,两个接口: IGetRes--方法Hello(), IGet ...
- 怎么判断PC端浏览器内核
browser = { /** * @property {boolean} ie 检测当前浏览器是否为IE */ ...
- C#按钮打开浏览器,网址
1.加入 using System.Diagnostics; 2. private void button_main_baidu_Click(object sender, EventArgs e) { ...