赋值后变量值仍然为零

Variable value still zero after assigned a value

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

正如 UnityScript wiki 所说:

No Global Variables Every top-level variable in JavaScript is global. Additionally, any variable declaration not preceded by the var statement is automatically scoped to be global. This is not the case in UnityScript; there are not really any global variables in UnityScript per sé.

这可能是一个原因。

Ps.: 如果您想为您当前的问题找到解决方案:定义另一个 class,具有常量字段。

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

设置的值

Select 您已将脚本附加到的游戏对象,并在 inspector 视图中找到该脚本。在那里你可以看到变量。