在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