我正在使用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并打印它..它正在工作。但也许这是一个非常奇怪的变量名称的情况..我不知道..也许,也许,他们的程序中有这个变量名称存在缺陷
答案 0 :(得分:2)
正如UnityScript wiki所说:
无全局变量 JavaScript中的每个顶级变量都是全局变量。此外,任何不在var语句之前的变量声明都将自动确定为全局范围。 UnityScript中不是这种情况; UnityScript每个人都没有真正的全局变量。
这可能是一个原因。
Ps。:如果您想为当前问题找到解决方案:使用常量字段定义另一个类。
答案 1 :(得分:2)
因为你使用的是unityscript(而不是javascipt),所以函数中定义的变量是在统一的inspector
视图中设置的。将代码更改为这些变量的初始值不会影响从inspector
设置的值。
选择已附加脚本的GameObject,并在inspector
视图中查找脚本。在那里你可以看到变量。