在Unity中使用全局變量的操作
創建一個腳本,輸入下面的代碼。腳本不需要添加到任何物體上,globle變量可以跨場景全局調用。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Globle { public static int globle= 1; }
和以前的許多語言不同,C#沒有全局變量或全局函數。C#的所有字段和方法都在類的上下文中。
在C#中,與全局字段或函數等價的是靜態字段或方法。
“全局變量/函數”和“C#靜態字段/方法”在功能上沒有差異,隻是靜態字段/方法可包含訪問修飾符(比如private),從而限制訪問並提供更好的封裝。——《c# 7.0本質論》
補充:Unity中全局變量的賦值過程
使用Unity開發的朋友可能會遇到這樣一個問題,那就是我在腳本中定義瞭一個公共全局變量並且賦值,但是運行後發現這個變量並不是這個值,這裡就給大傢解釋一下原因。
代碼如下:
public class Test : MonoBehaviour { public int a = 10; void Awake() { a = 20; } void Start () { a = 30; } }
由於是public類型,所以變量a會在Unity面板中顯示出來,如下圖:
那麼這個變量a的賦值順序是怎樣的呢?
1.首先a的值是定義時賦的值10。
2.然後a的值被Unity面板中的15替換。
3.然後a的值被Awake中的20替換。
4.然後a的值被Start中的30替換。
看到這個結果相信大傢都知道原因瞭,要初始化的公共變量最好放到start中,而不要相信定義時的效果。當然你也可以使用[HideInInspector]讓變量不顯示在Unity面板中。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。
推薦閱讀:
- None Found