2015-02-06 201 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