我有一个应该在检查器中填充的公共数组,如果该数组为空,我想做一些事情。 检查器中该数组为空" size = 0"
public GameObject[] objects;
void CheckArray ()
{
if (objects.Length < 0 ) // this doesn't work
{
Debug.Log("Empty!");
}
else
{
Debug.Log("Not Empty"); // this gets logged out
}
}
以上不起作用,我尝试过别的东西,但也不起作用:
void CheckArray ()
{
if (objects == null ) // this doesn't work
{
Debug.Log("Empty!");
}
else
{
Debug.Log("Not Empty"); // this gets logged out
}
}
答案 0 :(得分:3)
你的if语句if (objects.Length < 0 )
是错误的。
空时,数组通常为0
。当它为0
时,if (objects.Length < 0 )
将永远不会为真,因为您正在检查数组长度是否小于0
而不是数组长度是否等于0
..
应为if (objects.Length == 0 )
或if (objects.Length <= 0 )
编辑:
好的,但这对我没有任何意义,因为当我添加时 一个对象并检查&#34;对象[0]和#34;它返回那个对象,意思是 一个包含1个对象的数组将被索引为0,但同样如此 时间a&#34;长度&#34; 0意味着它是空的吗?
有一个数组大小,有元素。当我说空时,我的意思是不从编辑器设置大小。由于objects
是公共变量,因此编辑器会将其默认值设为0
。当我说空数组时0
就是我的意思。Debug.Log(objects.Length);
将输出0
。
空数组:
非空数组:
在这种情况下,即使元素1 为Debug.Log(objects.Length);
或未分配任何内容,null
也应打印3。 objects.Length
将始终等于编辑器中设置的大小。
GameObject camera = objects[0];
GameObject someObj = objects[1]; //ELEMENT IS NULL
GameObject dLight = objects[2];
想要检查每个个人元素是否为空?
for (int i = 0; i < objects.Length; i++)
{
if (objects[i] == null)
{
Debug.Log("Empty!: " + i);
}
else
{
Debug.Log("Not Empty: " + i);
}
}