5

基本的な質問があります。unityscriptで関数を使用する方法を学ぼうとしていますが、次のような関数を使用して関数を作成すると、

function Example(text)
{
    print(text);
}

次に、を使用して呼び出します

Example();

実際には、括弧内のコードの後半部分の括弧に文字列または数値を挿入できます。これは、前に作成した関数を通過して挿入されます。この場合、括弧に入力したものは何でも印刷されます。

さて、私の質問は、それが機能するかどうかです。それでは、2つの数値を渡して、それらに追加の機能を要求する機能が機能しないのはなぜですか。私が使用しようとしているコードは次のようになります。

Addition(4, 4);
function Addition(a, b)
{
    print(a+b);
}

これを実行しようとすると、Unityが教えてくれます

演算子「+」は、タイプ「オブジェクト」の左側とタイプ「オブジェクト」の右側では使用できません。

私はこのビデオをJavascript関数で見ていて、約9分のビデオで、男はまさにそれを入力し、スクリプトを取得して彼のために追加しました。私はスクリプティングにかなり慣れていないので、何が間違っているのかについてはあまりわかりません。助けてくれてありがとう。

4

2 に答える 2

5

実際、Unityではコードは次のようになります。

Addition(4, 4);
function Addition(a:int, b:int)
{
    print(a+b);
}

関数のパラメーターで期待する引数のタイプを呼び出す必要があります。JavaScriptではこれは通常必要ないということであなたは完全に正しいです。Unityではそうです。

これは、実際にはと呼ばれているためですUnityScript。UnityScriptは、UnityのJavascriptがブラウザで使用される従来のバージョンのJavascriptとは非常に異なることを指摘したい人が使用する名前です。

私はあなたとここの間の違いの素晴らしいリストを見つけUnityScriptましJavascript 。そのWebページから簡単な箇条書きを作成すると、違いは(おそらくすべてではないかもしれませんが)次のようになります。

  • JavaScriptはクラスフリーです
  • JavaScriptは、1つのvarステートメントで複数の変数宣言をサポートします。
  • JavaScriptでは、代入は式として扱われます。
  • JavaScriptのすべてのトップレベル変数はグローバルです。さらに、ステートメントが前に付いていない変数宣言varはグローバルです。
  • Javascriptでは、動的型付けが効率的です。
  • JavaScriptでは、プライバシーはかなり型破りです。
  • ドル記号($)は、JS識別子にあるため、UnityScript識別子には使用できません。
  • withUnityScriptにはステートメントはありません。
  • JavascriptはRegular Expression LiteralsRegExpまたはregex)をサポートします。
  • JavaScriptではthis、コンテキストに応じて、次の2つのいずれかを参照できます。
    • グローバルオブジェクト(ここでは説明しないのが最適です)
    • 現在のメソッドまたはコンストラクターが属するオブジェクト

UnityScriptでも分類するために、質問のタグを付け直しました。StackOverflowはそれについてこう言っています:

UnityのJavaScriptは、ECMAScript標準に厳密に準拠しようとします。これは、同じ標準に基づくJavaScriptの他の実装とは多くの点で異なります。これは、特に両方が.NET言語であるという点で、おそらくMicrosoftのJScriptに最も似ています。ただし、Unityのバージョンは独自に開発されたものであり、2つの間には多くの違いがあります。

私も難しい方法を見つけなければなりませんでした。私は2つの言語を台無しにして、この問題に行き着きました。

于 2013-02-28T08:05:19.843 に答える
0

Unity JavaScriptは、何らかの理由でそれら4をプリミティブNumber型として作成していないため、加算を実行できません。

valueOf()それらのメソッドを呼び出すことにより、それらをプリミティブに変換してみることができます。

于 2013-02-28T04:58:51.480 に答える