在Unity中使用全局變量的操作
創(chuàng)建一個(gè)腳本,輸入下面的代碼。腳本不需要添加到任何物體上,globle變量可以跨場(chǎng)景全局調(diào)用。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Globle { public static int globle= 1; }
和以前的許多語(yǔ)言不同,C#沒(méi)有全局變量或全局函數(shù)。C#的所有字段和方法都在類的上下文中。
在C#中,與全局字段或函數(shù)等價(jià)的是靜態(tài)字段或方法。
“全局變量/函數(shù)”和“C#靜態(tài)字段/方法”在功能上沒(méi)有差異,只是靜態(tài)字段/方法可包含訪問(wèn)修飾符(比如private),從而限制訪問(wèn)并提供更好的封裝?!禼# 7.0本質(zhì)論》
補(bǔ)充:Unity中全局變量的賦值過(guò)程
使用Unity開(kāi)發(fā)的朋友可能會(huì)遇到這樣一個(gè)問(wèn)題,那就是我在腳本中定義了一個(gè)公共全局變量并且賦值,但是運(yùn)行后發(fā)現(xiàn)這個(gè)變量并不是這個(gè)值,這里就給大家解釋一下原因。
代碼如下:
public class Test : MonoBehaviour { public int a = 10; void Awake() { a = 20; } void Start () { a = 30; } }
由于是public類型,所以變量a會(huì)在Unity面板中顯示出來(lái),如下圖:
那么這個(gè)變量a的賦值順序是怎樣的呢?
1.首先a的值是定義時(shí)賦的值10。
2.然后a的值被Unity面板中的15替換。
3.然后a的值被Awake中的20替換。
4.然后a的值被Start中的30替換。
看到這個(gè)結(jié)果相信大家都知道原因了,要初始化的公共變量最好放到start中,而不要相信定義時(shí)的效果。當(dāng)然你也可以使用[HideInInspector]讓變量不顯示在Unity面板中。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(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基于C#實(shí)現(xiàn)語(yǔ)音識(shí)別功能詳解
在.NET4.0中,可以借助System.Speech組件讓電腦來(lái)識(shí)別我們的聲音。本文將利用該組件實(shí)現(xiàn)語(yǔ)音識(shí)別功能,文中實(shí)現(xiàn)過(guò)程講解詳細(xì),需要的可以參考一下2022-04-04