5

私は Unity3d を使用してゲーム開発を始めていますが、スクリプトを作成するためにサポートされている言語が 3 つあります: C#、unityscript、Boo...

ただし、Web デザインの過去から来て、私は明らかに JavaScript に慣れていますが、いくつかの試行の後、Unity3d が実際にはスクリプト言語やnew Date().valueOf()、属性などのメソッド内のいくつかの要素やその他のステートメントargumentsを完全にサポートしていないことに気付きました。他の多くは正しく機能しません。また、私のファイルには、次のような他のすべてのメソッドを含むラッパーメソッドを含めることができないようです:

(function (scope) {
    function Start() {
        ...
    }
    ...
}(this));

そしてnew Date().valueOf()、JSで有効なようなものを使用すると、次のようになります:

MissingMethodException: メソッドが見つかりません: 'System.DateTime.valueOf'。Boo.Lang.Runtime.DynamicDispatching.MethodDispatcherFactory.ProduceExtensionDispatcher ()

おそらく、コンパイラは最初の「unityscript」コードをBoo言語に変換しますか? おそらくBooは正しい「ネイティブ」な選択であり、unity3dアプリを開発する際にはunityscript自体が最善の方法ではないのでしょうか?

問題なく動作する既知のすべてのネイティブ クラスとメソッドを完全にサポートする言語を考えていましたか?

上記の誤りについてお詫び申し上げます。ご意見をお聞かせください。

4

5 に答える 5

9

Unity は「本物の」Javascript 自体を使用しません。見る:

http://forum.unity3d.com/threads/1117-Javascript-Version

UnityScript は JavaScript 2.0 に基づいています。いくつか欠けているもの (switch ステートメントなど) がありますが、C++ の半分の速度であり、Mozilla よりもはるかに高速です。

慣れてしまえば、Unity 用の「JS」での開発は非常に高速で柔軟です。もちろん、ネイティブ コンポーネントを開発したり、C で何らかのインターフェイスを作成したりする場合は、次を使用する必要があります。 C# (結局のところ、C# を習得するのは難しくありません)。

于 2012-02-26T12:01:51.197 に答える
3

C# を使用する必要があります。人気があり、成熟しており、.NET にネイティブです。c# は大規模なチームが使用するものです。c# を学ぶことは将来役に立つでしょう。Unity3D の JS は、既に述べたように実際の JS ではなく、誰も Boo について聞いたことがありません。

于 2012-02-26T17:30:37.980 に答える
1

JS は、Unity で使用する最も一般的な言語です。しかし、言語は Mono で実装されているため、その実装での制限は Unity スクリプトにも影響します。

JS の Mono 実装がどのように機能するかはわかりませんが、エラー メッセージから判断すると、少なくとも Boo 用に最初に定義されたデータ型を使用しています。ただし、それは JS が「Boo に変わる」という意味ではありません。どちらも同じバイトコードにコンパイルされ、JIT され、Mono ランタイムによって実行されます。したがって、どちらの言語も他方より「ネイティブ」ではありません。

于 2012-02-26T12:00:58.513 に答える
0

ここからc#とJavaスクリプトを使用することの長所と短所を確認してください。C#はJavaScriptよりも少し高速であり、C#によって提供される追加機能を利用できます。ここから人々の意見を得ることができます。

c#を使用した開発には、VisualStudio2010の利点があります。Mono開発よりも優れたコード補完機能を提供します。

JavaScriptの場合のみ、変数は不特定のタイプを持つことができます。これは、変数の宣言中に値を割り当てない場合にのみ発生します。

動的に型指定された変数を使用するとパフォーマンスが低下し、キャストの問題が発生する可能性があります。これが懸念される場合は、#pragmastrictを使用してください。

于 2012-04-09T05:59:08.253 に答える