Unity3D——SendMessage方法的使用

SendMessage效率不高,因爲每次調用的時候都會去遍歷檢測自身或者子節點上要調用的方法。

一、方法

GameObject自身的Script

SendMessage("函數名", 參數,SendMessageOptions)

自身和子Object的Script
BroadcastMessage("函數名", 參數,SendMessageOptions)
自身和父Object的Script
SendMessageUpwards("函數名", 參數,SendMessageOptions)
可以跨語言的,例如Javascript可以調用C#的函數

二、第三個參數使用
如果沒有找到相應函數,會報錯(默認是這個狀態)
SendMessageOptions.RequireReceiver
沒有找到相應函數,也不會報錯,自動忽略
SendMessageOptions.DontRequireReceiver

三、測試代碼
using UnityEngine;
using System.Collections;

public class TestSendMassage : MonoBehaviour {

    void Start () {
        //this.gameObject.BroadcastMessage("sendMsg", SendMessageOptions.DontRequireReceiver);
        //this.gameObject.SendMessageUpwards("sendMsg", SendMessageOptions.DontRequireReceiver);
        this.gameObject.SendMessage("sendMsg", SendMessageOptions.DontRequireReceiver);
    }

    // Update is called once per frame
    void sendMsg() {
        Debug.Log("sendMsg");
    }
}
using UnityEngine;
using System.Collections;
//該腳本依次掛載在TestSendMassage腳本所掛節點的父節點或者子節點上
public class TestMsg : MonoBehaviour {

    void sendMsg()
    {
        Debug.Log("sendMsg1");
    }
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章