【发布时间】:2017-05-29 01:07:55
【问题描述】:
我试图在更新中销毁下面的 prefab1(销毁它的游戏对象),但我的游戏中的 prefab 没有被删除。下面的 DESTROYING HOLE 1 GEMS 调试出现在控制台中,并且游戏对象被破坏,但即使 gemCount_Hole1 小于 1,宝石(预制精灵)也不会从我的游戏中删除。请帮忙
if (gemCount_Hole1 < 1)
{
Debug.Log("DESTROYING HOLE 1 GEMS");
if (prefab != null) Destroy(prefab.gameObject);
}
else
{
for (int i = 0; i < gemCount_Hole1; i++)
{
Instantiate(prefab, new Vector3((i + xPos_Hole1) * 2.0F, -14, 0), Quaternion.identity);
}
}
我创建了一个列表,但不知道如何编写销毁。这是我将其编码为列表的方式
private System.Collections.Generic.List<GameObject> list ;
void Start()
{
list = new System.Collections.Generic.List<GameObject>();
}
void Update()
{
for (int i = 0; i < gemCount_Hole1; i++)
{
list .Add( Instantiate(prefab, new Vector3((i + xPos_Hole1) * 2.0F, -14, 0), Quaternion.identity)) ;
}
}
【问题讨论】:
-
你可能只是在寻找
Destroy....docs.unity3d.com/ScriptReference/Object.Destroy.html -
您不能将该列表称为“列表” :) 您必须将其称为“宝石”或“孔”——无论是什么相关的。
-
您绝对不能在“更新”中进行此操作。你在想“开始”
-
你是说我不应该在更新中实例化预制件吗?这是有道理的,但我需要检查用户点击并销毁 gem。
-
我必须在游戏启动时默认为每个存储桶加载 4 个宝石 - 我也使用 update () 来执行此操作。然后,例如,当用户单击存储桶 2 时,我需要将其计数设为 0(从中删除所有宝石)并使用 0 个宝石更新该存储桶并将宝石添加到其他一些存储桶。我可以正确地删除宝石并添加逻辑等,但无法弄清楚如何使用 update() 更新我的游戏屏幕。每次用户点击一个存储桶时,这个逻辑都会继续 - 它的所有宝石都被删除。我只想在用户单击存储桶时执行此操作。现在我的实例化发生在 update() 每一帧...