Unity作為游戲開發(fā)的重要編程語(yǔ)言,重要的就是要把控全局,讓玩家在玩游戲的時(shí)候可以全程輕松的切換到各種角色和環(huán)境,這個(gè)是非常的考驗(yàn)技術(shù)的。那么今天達(dá)內(nèi)科技的小編就來和大家講解下unity如何使用全局類實(shí)例變量?
1.主要思路是,給每一個(gè)腳本設(shè)置一個(gè)指向這個(gè)腳本的某個(gè)實(shí)例的全局變量,這樣你就可以隨時(shí)訪問那個(gè)實(shí)例,而不必在檢查器中一行一行搜索腳本。以下是它的運(yùn)作方式:在主要的DialogueSystem.cs腳本,把變量放在頂部,與它包含的類有相同的類型,如下:public
static DialogueSystem instance;or in Javascript:static var instance :
DialogueSystem;然后,在這個(gè)腳本的Awake()函數(shù),你只要寫:instance =
this;后簡(jiǎn)單地把這個(gè)腳本依附到你的場(chǎng)景中的任何對(duì)象上,當(dāng)Unity加載那個(gè)場(chǎng)景時(shí),那個(gè)腳本實(shí)驗(yàn)就會(huì)給自己設(shè)置DialogueSystem.instance。
2.它意味著如果我想訪問我的對(duì)話系統(tǒng),只需要寫下:DialogueSystem.instance.SomePublicFunctionName();Unity就知道我想調(diào)用場(chǎng)景中的DialogueSystem的那個(gè)實(shí)例的功能。注意:這種做法要求在給定場(chǎng)景中只有一個(gè)腳本實(shí)例。因此,這對(duì)于大的組件非常管用,如對(duì)話系統(tǒng),但我想它對(duì)于要在場(chǎng)景中多次出現(xiàn)的對(duì)象可能沒什么用,或者會(huì)出問題。
3. 使用callback(Delegate或Monobheaviour.SendMessage()):假如我們有一個(gè)NIS
(non-interactive
sequence),我們希望玩家角色走幾步,停下,與NPC對(duì)話,然后當(dāng)對(duì)話結(jié)束控制權(quán)回到玩家手中??梢院?jiǎn)單地從NIS腳本中調(diào)用下面的函數(shù),以激活這個(gè)對(duì)話系統(tǒng):DialogueSystem.instance.SomeFunctionToActivateDialogue();但我們?cè)趺粗缹?duì)話什么時(shí)候結(jié)束,NIS腳本可以把控制權(quán)還給玩家?我們可以使用callback。當(dāng)我們次調(diào)用DialogueSystem.instance.Whatever(),我們可以傳一些參數(shù)給那個(gè)函數(shù),當(dāng)它結(jié)束調(diào)用通知調(diào)用它的腳本時(shí)就可以使用的參數(shù)。做法有幾種。我更傾向于使用C#的Delegate。使用Javascript,就不要選它。
以上就是達(dá)內(nèi)科技的小編給大家整理的關(guān)于unity如何使用全局類實(shí)例變量的問題了,如果說你對(duì)于學(xué)習(xí)unity有興趣的話,那么達(dá)內(nèi)科技?xì)g迎大家來我們公司的unity培訓(xùn)班進(jìn)行實(shí)地考察,也可以點(diǎn)擊我們文章下面的獲取試聽資格按鈕來獲取我們的unity課程免費(fèi)試聽資格,在試聽中可以更加深入的了解我們達(dá)內(nèi)科技。