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 ...
随机推荐
- vagrant拷贝后vagrant file需要加的配置
config.ssh.forward_agent config.ssh.username = "vagrant" config.ssh.password = "vagra ...
- hdu1429之BFS
胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- C#委托的详细使用
代码如下: public delegate void GreetingDelegate(string name);//定义委托,它定义了可以代表方法的类型 class Program { public ...
- Csharp 高级编程 C7.1.2
第七章 代理(1) 一.代理要声明 二.代理使用步骤 声明代理 初始化代理(使用 实例的方法名 作为参数) 使用代理 代码示例: /*C7.1.2*/ using System; using Syst ...
- BZOJ4006 JLOI2015 管道连接(斯坦纳树生成森林)
4006: [JLOI2015]管道连接 Time Limit: 30 Sec Memory Limit: 128 MB Description 小铭铭最近进入了某情报部门,该部门正在被如何建立安全的 ...
- hdu2488 dfs
G - 深搜 基础 Crawling in process... Crawling failed Time Limit:1000MS Memory Limit:65536KB 64bi ...
- C#定义委托函数实现在别的窗体中操作主窗体中的SerialPort控件
1.在主窗体(含有serialPort的窗体)中 //先定义委托 public delegate void OpenPort(); public delegate void ClosePort(); ...
- Longest Palindromic Substring -LeetCode
题目 Given a string s,find the longest palindromic substring in S.You may assume that the maximum len ...
- 遍历json的方式
var obj = eval("(" + data + ")"); for(var key in obj) { alert(obj[key]); }
- 【转】myget编译过程中make出错的解决办法
源链接:http://www.tangqizhong.info/?p=741 myget(至今不明白为什么它对应的命令是mytget…)是我从用linux之后就开一直在用的命令行下载工具(其次也会用到 ...