'运营商>不能与“对象”类型的左侧和Unity中“对象”类型的右侧错误一起使用

时间:2013-01-22 15:41:18

标签: unity3d unityscript

我将这些代码统一起来,我收到了这个错误。 “运算符>不能与'对象'类型的左侧和'对象'类型的右侧一起使用。对我而言,它就像游戏引擎的unityscript中的错误,你怎么看?

var PlayerNames = ["john","doe","potato"];
var PlayerScores = [3,2,5];

if(PlayerScores[1] < PlayerScores[0])
print("potato");

1 个答案:

答案 0 :(得分:4)

UnityScript和Javascript之间存在差异。在JavaScript中,无需将变量调用到类中。因此,您向我们展示的代码是正确的。

但是,这在UnityScript中是不正确的。您需要声明变量的类。见这个例子:

function Machine(x) {
   this.kind = ["bulldozer", "lathe", "car"][x];
}

var c = new Machine(2);
print(typeof c.announce); // "undefined"

Machine.prototype.announce = function() {
   print("I am a "+this.kind+".");
};

print(typeof c.announce); // "function"
c.announce(); // prints "I am a car."

如上所示,在JavaScript中,当使用new关键字调用时,函数可以创建对象。在此之后,可以扩展原型(模板)对象Machine以提供其他功能,并且此扩展会影响所有类实例(过去和将来)。

与JavaScript不同,UnityScript具有类。此外,在UnityScript中,一旦定义了一个类,该类在程序运行时期间或多或少都是固定的。 (注意:这个规则可能有一些例外,例如Reflection,但你可能不需要这个,也不应该使用它,因为它不是很有效。)但是,类系统还有一个额外的好处,就是更容易 - 读,更熟悉(对大多数)语言。

class Machine {
   var kind : String; // fields are public by default
   function Machine(x : int) {
      this.kind = ["bulldozer", "lathe", "car"][x];
   }

   function announce() {
      print("I am a "+this.kind+".");
   }
}

print(typeof Machine.prototype); // causes a compile-time error
var c = new Machine(2);
c.announce(); // prints  "I am a car."