0

私は2つのスクリプトを持っています。

スクリプト 1 スクリプト 2

Script1 では、値 2、4、6 などを含む配列リストを宣言しました...

public static ArrayList aArray= new ArrayList();

function update(){
   if(bool1)
   {
      aArray.Add(i);
   }
}

Script2 の arraylist に値 5 が存在することを確認する必要があります。

値が存在する場合、そのキーを取得する必要があります。

入手方法は?

4

3 に答える 3

3

まず、List<T>non-generic の代わりに genericArrayListを使用することをお勧めします。これにより、そのリストに入るオブジェクトのタイプを指定できます (タイプ セーフを向上させるため)。
また、変数を宣言するreadonlyことで、誤って上書きしてしまうことを防ぐことができます。これはLists の場合によくあることです (結局のところ、いつでも変数だけを使用できClearます)。

public static readonly List<int> items = new List<int>();

実際の質問に答えるために、リストに値が存在するかどうかを確認したい場合は、メソッドを使用できますContains値が存在しない
かどうかを確認するには、式の前に を置きます。!

if (!Script1.items.Contains(i)) {
    // This will only execute if the list does not contain i.
    items.Add(i);
}
于 2013-03-28T08:36:00.293 に答える
2

含むを使用してみてください。このコードは、既に ArrayList に値があるかどうかを検出し、コードが再度値を追加するのを停止します。

public static ArrayList aArray= new ArrayList();

function update()
{
   if(aArray.Contains(i)==false)
   {
      aArray.Add(i);
   }
}

値を削除したい場合は、aArray.Remove(i)と同じくらい簡単です。

于 2013-03-28T08:35:56.947 に答える
1

私の理解が正しければ、Script1 はカメラの中にあり、Script2 はキャラクターの中にあります。この例では、それぞれ MainCamera と Character と呼びます。

さて、私の理解が間違っていない限り、あなたは Script2 から Script1 の配列にアクセスしようとしています。他の答えは非常に正しいですが、unity3D にはアクセスするために必要な回避策が少しあります。

とにかく、Script2内でこれを使用します:

if(GameObject.Find("MainCamera").GetComponent<Script1>().aArray.Contains(5))
{
   //Do your code here
}
于 2013-03-28T09:14:41.117 に答える