2015-02-06 69 views
1

我正在製作一款使用Unity的簡單遊戲,玩家需要儘可能多地拿起硬幣。當玩家擊中硬幣,硬幣會消失,將比分以1遞增,例如,這裏是我的腳本賦值後的變量值仍然爲零

#pragma strict 

var coinEffect : Transform; 
var coinValue = 2; 


function OnTriggerEnter (info : Collider) { 
    if (info.tag == "Player") { 
     // Debug.Log("Ball is picked up"); 
     var effect = Instantiate(coinEffect, transform.position, transform.rotation); 

     GameMaster.currentScore += coinValue; 
     Debug.Log(coinValue); 

    }; 
} 

的問題是變量coinValue打印0當我把它打印到控制檯。

任何想法爲什麼?

更新我不知道爲什麼,但如果我宣佈另一個變量例如number = 12並打印它。它的工作。但也許這是與變量名很奇怪的情況..我不知道..也許,只是也許有這個varible的名字在他們的程序中的漏洞

+0

印在哪裏?在一個函數中,還是在文件級? – meskobalazs 2015-02-06 13:45:58

+0

將它打印到控制檯..使用Debug.Log – 2015-02-06 13:47:11

+0

我的意思是,放在哪裏的'Log'函數調用? – meskobalazs 2015-02-06 13:48:40

回答

2

由於您使用的是unityscript(而不是javascipt),所以在函數的外側定義的變量被設置在統一的inspector視圖內。將代碼更改爲這些變量的初始值不會影響從inspector設置的值。

選擇您已附加腳本的GameObject並在inspector視圖中查找腳本。在那裏你可以看到變量。

enter image description here

+0

OMG ...就是這樣..謝謝你..(我感到非常慚愧我的自我..哈哈) – 2015-02-07 04:18:42

2

由於UnityScript wiki說:

沒有全局變量 JavaScript中的每個頂級變量都是全局變量。此外,var語句之前的任何變量聲明都會自動限定爲全局變量。 UnityScript中不是這種情況;每一個Unity中都沒有真正的全局變量。

這可能是一個原因。

Ps .:如果您想爲當前問題找到解決方案:定義另一個具有常量字段的類。

+0

有'var'關鍵字,因此它不可能與維基有關全局變量的說法相關。 – Hacketo 2015-02-06 13:36:07

+0

當我閱讀它時,該子句僅指JavaScript。同樣在JavaScript *嚴格模式下,這已經不是真的了。 – meskobalazs 2015-02-06 13:38:12

+0

是的,但是,在OP代碼中,沒有什麼東西可以成爲Javascript中的全局變量,因爲他使用'var'關鍵字。 'global'是否意味着Unityscript的內部範圍之外? – Hacketo 2015-02-06 13:40:58