在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#和Jieba.NET實(shí)現(xiàn)中英文混合文本關(guān)鍵詞的提取功能
Jieba.NET?是一個(gè)在?C#?中實(shí)現(xiàn)的分詞庫(kù),它基于?Java?的?jieba?分詞庫(kù),并進(jìn)行了?C#?語(yǔ)言的移植,Jieba?是一個(gè)高效的中文分詞工具,能夠處理全模式、精確模式以及搜索引擎模式,本文給大家介紹了如何使用C#和Jieba.NET實(shí)現(xiàn)中英文混合文本關(guān)鍵詞的提取功能2025-03-03
C#客戶端程序調(diào)用外部程序的3種實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于C#客戶端程序調(diào)用外部程序的3種實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04

