1

私はこれらのコードを統一しており、このエラーを受け取りました。「演算子 > は、タイプ「オブジェクト」の左側とタイプ「オブジェクト」の右側では使用できません。私にとっては、ゲーム エンジンの unityscript のバグのようなものですが、どう思いますか??

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

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

1 に答える 1

5

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を拡張して追加機能を提供でき、過去および将来のすべてのクラスインスタンスがこの拡張の影響を受けます。

UnityScriptには、JavaScriptとは異なりクラスがあります。また、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."
于 2013-02-28T12:36:31.727 に答える