Stack 中的每个对象都为空
Every Object in Stack gets null
我不想在单击 Stack 时从 Gameobject 中读取每个子项。
之后我想销毁所有这些对象,所以它们不会显示。
在我的计划中,这些对象在堆栈中应该仍然可用。
但是如果我想再次从堆栈中添加对象,它们都是空的。
我是 Unity 的新手,不知道为什么这不起作用。
很抱歉之前有人问过这个问题,但我没有看到任何类似的问题。
else if(!stacked)
{
for (int i = 0; i < parent.transform.childCount; i++)
{
aufgenommeneKarten.Push(parent.transform.GetChild(i).gameObject);
Destroy(parent.transform.GetChild(i).gameObject);
}
stacked = !stacked;
}
else
{
if (aufgenommeneKarten.Count != 0)
{
go = new GameObject();
go = aufgenommeneKarten.Pop();
go.transform.SetParent(parent.transform, false);
}
else
{
stacked = !stacked;
}
}
这是我的代码。
我不认为你正在处理对象的实际深层副本。
所以在这里:
aufgenommeneKarten.Push(parent.transform.GetChild(i).gameObject);
Destroy(parent.transform.GetChild(i).gameObject); // this will act on the pushed object
推送的 parent.transform.GetChild(i).gameObject
正在 Destroy
之后编辑。我不知道你的 Destroy 方法是如何实现的,但我发现如果你 Dispose/destroy 等等,你实际上会引用同一块内存。所以,摧毁一个,也会摧毁被推动的那个。
最重要的是:
你什么都不做来验证:parent.transform.GetChild(i).gameObject
当你推它的时候。您确定 null
不在吗?
此外,stacked = !stacked;
:您的逻辑暗示这可以明确设置。喜欢stacked = true
。在你的情况下:我建议它防止潜在的错误。
这部分:
go = new GameObject();
go = aufgenommeneKarten.Pop();
似乎使用了一个字段 go
:在某些情况下这可能有点棘手。我认为最好跳过第一行:
//go = new GameObject(); not needed
go = aufgenommeneKarten.Pop();
我不想在单击 Stack 时从 Gameobject 中读取每个子项。 之后我想销毁所有这些对象,所以它们不会显示。
在我的计划中,这些对象在堆栈中应该仍然可用。 但是如果我想再次从堆栈中添加对象,它们都是空的。
我是 Unity 的新手,不知道为什么这不起作用。
很抱歉之前有人问过这个问题,但我没有看到任何类似的问题。
else if(!stacked)
{
for (int i = 0; i < parent.transform.childCount; i++)
{
aufgenommeneKarten.Push(parent.transform.GetChild(i).gameObject);
Destroy(parent.transform.GetChild(i).gameObject);
}
stacked = !stacked;
}
else
{
if (aufgenommeneKarten.Count != 0)
{
go = new GameObject();
go = aufgenommeneKarten.Pop();
go.transform.SetParent(parent.transform, false);
}
else
{
stacked = !stacked;
}
}
这是我的代码。
我不认为你正在处理对象的实际深层副本。
所以在这里:
aufgenommeneKarten.Push(parent.transform.GetChild(i).gameObject);
Destroy(parent.transform.GetChild(i).gameObject); // this will act on the pushed object
推送的 parent.transform.GetChild(i).gameObject
正在 Destroy
之后编辑。我不知道你的 Destroy 方法是如何实现的,但我发现如果你 Dispose/destroy 等等,你实际上会引用同一块内存。所以,摧毁一个,也会摧毁被推动的那个。
最重要的是:
你什么都不做来验证:parent.transform.GetChild(i).gameObject
当你推它的时候。您确定 null
不在吗?
此外,stacked = !stacked;
:您的逻辑暗示这可以明确设置。喜欢stacked = true
。在你的情况下:我建议它防止潜在的错误。
这部分:
go = new GameObject();
go = aufgenommeneKarten.Pop();
似乎使用了一个字段 go
:在某些情况下这可能有点棘手。我认为最好跳过第一行:
//go = new GameObject(); not needed
go = aufgenommeneKarten.Pop();