
Unityに出会った人にとって、このプラットフォームが多数のさまざまな配列を提供するのは秘密ではありません-5ピース(JSおよびそれ以上の場合-6!)にもなります。 それで、何を選ぶべきか、そしてこの多様性に混乱しないようにするにはどうすればいいのでしょうか?
始めます-最後から。 収集したデータをすぐにタブレットに持ち込みます。
| 型なし | タイプ |
インデックスアクセス、 固定長 | - | インライン配列 (組み込み配列) |
インデックスアクセス、 動的サイズ | 配列リスト またはJavascript配列 | 一覧 |
キーアクセス | ハッシュテーブル | 辞書 |
そして今-それぞれについて個別に話しましょう...
JavaScript配列
配列の最も単純で遅いバージョン。 JavaScript(UnityScript)でのみ使用できます。 型なし、動的サイズ。 任意のタイプのオブジェクトを混在させて保存できます。 ただし、これは混乱を招く可能性があり、また(プラグマストリクトを使用する場合)毎回型をキャストする必要があります。
使用法:
| UnityScript | C# |
発表 | var a:Array = new Array(); | - |
追加 | a.Add(アイテム); | - |
アクセス | [i] | - |
削除 | a.RemoveAt(i); | - |
サイズ | 長さ | - |
Unityサイトのドキュメント:
unity3d.com/support/documentation/ScriptReference/Array.html配列リスト
.Netは、以前のJavascript配列に似た配列タイプですが、UnityScriptとC#の両方で使用できます。 すべて同じ長所と短所がありますが、機能のセットは前のケースよりも豊富です。
使用法:
| UnityScript | C# |
発表 | var a:Array = new ArrayList(); | ArrayList a = new ArrayList(); |
追加 | a.Add(アイテム); |
アクセス | [i] |
削除 | a.RemoveAt(i); |
サイズ | カウント |
MSDNドキュメント:
msdn.microsoft.com/en-US/library/system.collections.arraylist.aspx組み込み配列
アレイの最速バージョン。 ただし、固定長のハードアレイであるため、中央に要素を挿入することはできません。 ただし、最大のパフォーマンスが必要な場合は、組み込み配列が必要です。 さらに、2次元にすることもできます。
使用法:
| UnityScript | C# |
発表 | var a:int [] = new int [100]; | int [] a = new int [100]; |
追加 | [i] =アイテム; |
アクセス | [i] |
削除 | - |
サイズ | 長さ |
2D広告 | var a:int [、] = new int [10、10]; | int [、] a = new int [10、10]; |
2Dアクセス | a [x、y] |
配列およびその他の型から組み込み配列への変換は、.ToBuiltin()メソッドを使用して行われます。
MSDNドキュメント:
msdn.microsoft.com/en-us/library/system.array%28VS.80%29.aspxハッシュテーブル
インデックスではなくキーでアクセスできる型なし配列。 ちなみに、キーも型指定されていません(より正確には、値と同様に、Object型のオブジェクトです)。
使用法:
| UnityScript | C# |
発表 | var a:Hashtable = new Hashtable(); | Hashtable a = new Hashtable(); |
追加 | [[キー]] =アイテム; |
アクセス | [キー] |
削除 | a.Remove(キー) |
サイズ | カウント |
MSDNドキュメント:
msdn.microsoft.com/en-us/library/system.collections.hashtable.aspx辞書
Hashtableに似ていますが、そのような配列のキーと要素の両方が指定された型である点が異なります。 したがって、このビジネスはより速く動作し、追加の型キャストを必要としません。
使用法:
| UnityScript | C# |
発表 | var a:辞書。<KeyT、ValueT> =新しい辞書。<KeyT、ValueT>(); | 辞書<KeyT、ValueT> a =新しい辞書<KeyT、ValueT>(); |
追加 | [[キー]] =アイテム; |
アクセス | [キー] |
削除 | a.Remove(キー) |
サイズ | カウント |
MSDNドキュメント:
msdn.microsoft.com/en-us/library/xfhwa508.aspxおわりに
実際、概要プレートは記事の冒頭にありました。
何をアドバイスできますか? 速度が必要-組み込み配列[]を使用します。 そして可能な限り-常に型付き配列を使用します。 これにより、不必要な混乱、型キャスト、速度から保護されます。
また、MSDNの配列クラスがSystem.Collections.Genericパッケージに含まれていることを忘れないでください。そのため、パスを直接指定する(たとえば、新しいSystem.Collections.Generic.List。<int>)か、適切なインポート/使用を記述します。