赋值后,变量值仍为零

时间:2015-02-06 13:28:36

标签: unity3d unityscript

我正在使用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并打印它..它正在工作。但也许这是一个非常奇怪的变量名称的情况..我不知道..也许,也许,他们的程序中有这个变量名称存在缺陷

2 个答案:

答案 0 :(得分:2)

正如UnityScript wiki所说:

  

无全局变量 JavaScript中的每个顶级变量都是全局变量。此外,任何不在var语句之前的变量声明都将自动确定为全局范围。 UnityScript中不是这种情况; UnityScript每个人都没有真正的全局变量。

这可能是一个原因。

Ps。:如果您想为当前问题找到解决方案:使用常量字段定义另一个类。

答案 1 :(得分:2)

因为你使用的是unityscript(而不是javascipt),所以函数中定义的变量是在统一的inspector视图中设置的。将代码更改为这些变量的初始值不会影响从inspector设置的值。

选择已附加脚本的GameObject,并在inspector视图中查找脚本。在那里你可以看到变量。

enter image description here