检查一个值是否存在于unity 3d的数组中

本文关键字:unity 3d 数组 存在 是否 一个 检查 | 更新日期: 2023-09-27 18:06:21

我有两个脚本。

Script1Script2

在Script1中,我声明了一个数组列表,它包含值2、4、6等…

public static ArrayList aArray= new ArrayList();
function update(){
   if(bool1)
   {
      aArray.Add(i);
   }
}

我必须检查一个值5存在于Script2的arraylist中。

如果value存在,我必须得到它的键

如何得到它?

检查一个值是否存在于unity 3d的数组中

首先,我建议使用泛型List<T>而不是非泛型ArrayList,这使您能够指定进入该列表的对象的类型(为了更好的类型安全性)。
此外,声明变量readonly可以防止意外地覆盖它,这通常是List s的情况(毕竟,您总是可以仅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);
}

尝试使用Contains。这段代码将检测数组列表中是否已经有该值,并将阻止代码第二次添加该值。

public static ArrayList aArray= new ArrayList();
function update()
{
   if(aArray.Contains(i)==false)
   {
      aArray.Add(i);
   }
}

如果你想删除一个值,它就像 array . remove (i)

如果我理解正确的话,Script1在您的相机中,而Script2在字符中。在本例中,我们将它们分别称为MainCamera和Character。

现在,除非我理解错了,否则您正试图从Script2访问Script1中的数组。虽然其他的答案是非常正确的,unity3D有一个工作区需要访问它。

无论如何,在Script2中使用这个:

if(GameObject.Find("MainCamera").GetComponent<Script1>().aArray.Contains(5))
{
   //Do your code here
}