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

    如果你感兴趣,你可以把你妹妹介绍给我
  • 相关阅读:
    linux下的shell 快捷键
    Python3.x和Python2.x的区别
    [Python2.x] 利用commands模块执行Linux shell命令
    redis缓存策略
    高并发解决方案
    java8 lambda表达式应用
    java读写分离的实现
    数据库读写分离
    大数据量处理方案:分布式数据库
    google的CacheBuilder缓存
  • 原文地址:https://www.cnblogs.com/plateFace/p/4381043.html
Copyright © 2020-2023  润新知