Unity-使用するアレイを選択します

Unityに出会った人にとって、このプラットフォームが多数のさまざまな配列を提供するのは秘密ではありません-5ピース(JSおよびそれ以上の場合-6!)にもなります。 それで、何を選ぶべきか、そしてこの多様性に混乱しないようにするにはどうすればいいのでしょうか?

始めます-最後から。 収集したデータをすぐにタブレットに持ち込みます。
型なしタイプ
インデックスアクセス、
固定長
-インライン配列
(組み込み配列)
インデックスアクセス、
動的サイズ
配列リスト
またはJavascript配列
一覧
キーアクセスハッシュテーブル辞書
そして今-それぞれについて個別に話しましょう...

JavaScript配列


配列の最も単純で遅いバージョン。 JavaScript(UnityScript)でのみ使用できます。 型なし、動的サイズ。 任意のタイプのオブジェクトを混在させて保存できます。 ただし、これは混乱を招く可能性があり、また(プラグマストリクトを使用する場合)毎回型をキャストする必要があります。

使用法:
UnityScriptC#
発表var a:Array = new Array();-
追加a.Add(アイテム);-
アクセス[i]-
削除a.RemoveAt(i);-
サイズ
 長さ 
-
Unityサイトのドキュメント: unity3d.com/support/documentation/ScriptReference/Array.html

配列リスト


.Netは、以前のJavascript配列に似た配列タイプですが、UnityScriptとC#の両方で使用できます。 すべて同じ長所と短所がありますが、機能のセットは前のケースよりも豊富です。

使用法:
UnityScriptC#
発表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次元にすることもできます。

使用法:
UnityScriptC#
発表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型のオブジェクトです)。

使用法:
UnityScriptC#
発表var a:Hashtable = new Hashtable();Hashtable a = new Hashtable();
追加[[キー]] =アイテム;
アクセス[キー]
削除a.Remove(キー)
サイズカウント
MSDNドキュメント: msdn.microsoft.com/en-us/library/system.collections.hashtable.aspx

辞書


Hashtableに似ていますが、そのような配列のキーと要素の両方が指定された型である点が異なります。 したがって、このビジネスはより速く動作し、追加の型キャストを必要としません。

使用法:
UnityScriptC#
発表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>)か、適切なインポート/使用を記述します。

Source: https://habr.com/ru/post/J142285/


All Articles