unity如何調用另一個腳本中的變量

調用其他實例的腳本是一種很常用的需求,在Unity3D中實現起來也有多種方法,假設在ScriptB有一個DoSomething函數,如下所示:

using UnityEngine;

public class ScriptB : MonoBehaviour {

public void DoSomething() {

Debug.Log("Hi there");

}

}

在ScriptA中如果要訪問某個GameObject的ScriptB腳本中的DoSomething函數:

using UnityEngine;

public class ScriptA : MonoBehaviour {

public ScriptB other;

void Update() {

other.DoSomething();

}

}

注意ScriptA有一個ScriptB類型的公共變量,這是一個絕妙的小技巧,如此一來你便可以通過編輯器拖拽任何含有ScriptB這一腳本的GameObject至該變量上(因爲是public的,所以暴露於編輯器界面中),Unity會自動識別你需要賦值的不是那個GameObject,而是它所包含的ScriptB腳本。

除此之外,如果你不喜歡這種在編輯器中直接賦值的辦法,你可以通過GameObject.Find(“somename”) 來獲取GameObject:

GameObject go = GameObject.Find("somegameobjectname");

ScriptB other = (ScriptB) go.GetComponent(typeof(ScriptB));

other.DoSomething();

不過需要注意的是GameObject.Find()的執行效率非常低,所以如果可能的話還是儘可能使用“直接賦值法”吧。

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