我們今天研究下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這個方法都會被調用