这是功能:
for (i = 0; i <= array.Length; i++) {
if (array[i].transform.position = 0)
array.RemoveAt(i);
print(“Removed element: “ + array[i].name);
else if (array[i].transform.position > 0)
array[i].transform.forward = Vector3(1,0,0);
}
答案 0 :(得分:2)
我不确定这是否是一个有效的问题,但肯定存在一些逻辑错误:
RemoveAt(int index)
(但我不是一个大的统一用户)(虽然有列表)你绝对不应该(即使一些奇怪的语言可能允许你)尝试访问你刚删除的对象...这是你试图在这里做的:
array.RemoveAt(i);
print(“Removed element: “ + array[i].name);
位置是Vector3而不是int或float,所以你不能这样做:array[i].transform.position = 0
你永远不应该在if()中使用=(赋值运算符),你应该使用==(比较运算符)(因为=当可以赋值时,返回总是为真)
由于与array[i].transform.position > 0
array[i].transform.forward = Vector3(1,0,0);
让我感到疑惑,因为如果它是C#我会在Vector3()之前尝试new
关键字,我更喜欢浮动:
array[i].transform.forward = new Vector3(1.0F,0,0);
但是即便有Unity会给你一个错误,说明你不能先修改Transform的组件而不先制作副本我相信...
但不错的尝试:D
答案 1 :(得分:0)
你无法将矢量与0比较,它需要像这样
如果(myObject.transform.position == Vector3.zero)
并删除我建议包含System.Collections.generic lib的内容 然后使用Listarray然后你可以使用array.RemoveAt(index);