当前,我遇到了一个将游戏对象添加到新列表
我尝试了list.clear()方法,但收到的大小为1,并且缺少(Gameobject)。我也尝试过使用forloop来获取计数,然后使用RemoveAt(i)方法,但收到的计数相同。
我正在使用Unity的Inspector直观地看到此问题。
示例:
public GameObject Object;
public List<GameObject> ObjectList = new List<GameObject>();
public void AddObjectToList()
{
ObjectList.Add(Object);
}
public void RemoveObjectsFromList()
{
//Attempt 1
ObjectList.Clear();
//Attempt 2
for (int i = 0; i < ObjectList.Count; ++i)
{
ObjectList.RemoveAt(i);
}
}
期望从列表中清除游戏对象,并将列表大小恢复为0。
答案 0 :(得分:0)
让我们看看您的列表删除代码。
for (int i = 0; i < ObjectList.Count; ++i)
{
ObjectList.RemoveAt(i);
}
所以
包含3个项目的列表(我有点懒惰)
i = 0,在0处删除。所以现在您有了0和1.。 我++
现在您删除1 ....保留0 ...
您需要反向移除。.
所以对于i = count-1到0 ..如果您需要说删除游戏对象或其他东西,
或.clear ..
但是,您尝试过的事实。清除表明也许“对象”也需要销毁?
例如
for (int i = ObjectList.Count-1; i >= 0; i--)
{
Destroy(ObjectList[i]);
ObjectList.RemoveAt(i);
}
答案 1 :(得分:0)
谢谢您的帮助,但我找到了答案,如果我以前曾提到过,这可能对所有人都有帮助。我正在使用两个单独的脚本。脚本1作为具有所有游戏对象的主控制器,并列出了脚本1调用了脚本2中的功能的功能,这些功能利用了脚本1中的变量。
要能够在所有脚本中使用脚本1中的变量,它们必须是静态
问题:
错误:公共列表
更正:公共静态列表
抱歉。