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.是一种树形结构
  image

 

 

SendMessage的总结:
    1. SendMessage无法向子物体方法传播的
    2. 如果在当前物体组件集合没找到方法,报错
    3. SendMessage是同步运行
    4. 不管方法是什么权限都可以调用
    5. 如果子类有方法优先调用, 父类有方法后调用, 两个都没有方法报错
    6. SendMessage("A")该游戏物体每一个组件存在A这个方法都会被调用

posted @ 2015-03-31 15:25  盘子脸  阅读(3690)  评论(0编辑  收藏  举报