在Unity中使用全局變量的操作
創(chuàng)建一個腳本,輸入下面的代碼。腳本不需要添加到任何物體上,globle變量可以跨場景全局調(diào)用。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Globle { public static int globle= 1; }
和以前的許多語言不同,C#沒有全局變量或全局函數(shù)。C#的所有字段和方法都在類的上下文中。
在C#中,與全局字段或函數(shù)等價的是靜態(tài)字段或方法。
“全局變量/函數(shù)”和“C#靜態(tài)字段/方法”在功能上沒有差異,只是靜態(tài)字段/方法可包含訪問修飾符(比如private),從而限制訪問并提供更好的封裝。——《c# 7.0本質(zhì)論》
補(bǔ)充:Unity中全局變量的賦值過程
使用Unity開發(fā)的朋友可能會遇到這樣一個問題,那就是我在腳本中定義了一個公共全局變量并且賦值,但是運(yùn)行后發(fā)現(xiàn)這個變量并不是這個值,這里就給大家解釋一下原因。
代碼如下:
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替換。
看到這個結(jié)果相信大家都知道原因了,要初始化的公共變量最好放到start中,而不要相信定義時的效果。當(dāng)然你也可以使用[HideInInspector]讓變量不顯示在Unity面板中。
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
C#、.Net中把字符串(String)格式轉(zhuǎn)換為DateTime類型的三種方法
這篇文章主要介紹了C#、.Net中把字符串(String)格式轉(zhuǎn)換為DateTime類型的三種方法,本文總結(jié)了Convert.ToDateTime(string)、Convert.ToDateTime(string, IFormatProvider)、DateTime.ParseExact()三種方法,需要的朋友可以參考下2015-07-07