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這個方法都會被調用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM