2013-01-08 34 views
1

據我所知,使用全局變量的唯一的可能性是其定義爲靜態的(在C#中常量)。 有沒有什麼方法可以從另一個腳本訪問和更改變量,而這兩個腳本都訪問同一個變量?Unity3D,可編輯的全局變量?

回答

3

這要看情況和您的要求。在大多數情況下,有幾種方法可行。

如果兩個腳本從MonoBehaviour導出並處於活動狀態時可以採取非靜態公共成員,並使用GameObject.Find(其存儲爲參考,如果你需要經常使用或在Unity編輯器拖放)。

這確實只有當你依賴於對象的兩個對象都是同一場景中的活動或有其生命週期,通過調用DontDestroyOnLoad擴展工作。

如果你有普通的對象,public static應該是最方便的方法,但可以用單例模式相結合。請注意,public const僅適用於基元類型。如果您想授予對結構體或對象的只讀訪問權限,您可以使用public static readonly

看看In Unity, how can I pass values from one script to another?代碼示例和Unity3D singleton manager classes的一些深入的想法關於單身人士的MonoBehaviour實例。

0

如果數值支持的類型,不被訪問經常和將從應用程序運行之間的持久性中獲益,PlayerPrefs有時讓一些全局:)

的好地方