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这个方法都会被调用

如果你感兴趣,你可以把你妹妹介绍给我
原文地址:https://www.cnblogs.com/plateFace/p/4381043.html