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[0]); Debug.Log(obj[1]); } } }
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这个方法都会被调用
如果你感兴趣,你可以把你妹妹介绍给我