检查一个值是否存在于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存在,我必须得到它的键
如何得到它?
首先,我建议使用泛型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
}