【发布时间】:2018-10-28 22:13:34
【问题描述】:
我正在创建一个游戏,在游戏中有 7 个 GameObject Prefab,每个都在关卡上实例化它,我现在正在创建将实例化每个 GameObject Prefab 的主脚本,现在我想做的就是创建每 80f“秒”实例化一个新的 GameObject Prefab,并销毁最后一个,例如,自关卡启动后的 0f 秒内,实例化(随机)GameObject Prefab,并在 80f 秒内销毁我在 0f 秒内创建的一个,并实例化一个新的,等等。
这是我现在拥有的脚本,它不起作用,它会实例化新的游戏对象,但不要破坏我创建的最后一个。 我希望你能帮助我/给我一个如何解决这个问题的想法 注意我尝试使用 Stack,但是当我从堆栈中销毁 Prefab 时,它会自行销毁 Prefab,并且无法恢复。我的脚本:
TimeSinceLevelStarted = Time.timeSinceLevelLoad;
if (Mathf.Clamp(TimeSinceLevelStarted - TimeToLoadNext, -2f, 2f) == TimeSinceLevelStarted - TimeToLoadNext
&& LoadedFirstLevel == false)
{
GameObject go = LevelsPrefabs[Random.Range(0, LevelsPrefabs.Length)];
FirstLevel(go);
LoadedFirstLevel = false;
Debug.Log("Instantiated Prefab2");
}
}
private void FirstLevel(GameObject go)
{
if (LoadedFirstLevel == false)
{
Instantiate(go, new Vector3(0, 0, 0), Quaternion.identity);
goStack.Push(go);
Debug.Log("Instantiated Prefab1");
TimeToLoadNext += 50f;
LoadedFirstLevel = false;
if (TimeToLoadNext >= 30f) {
Destroy(go);
}
}
}
【问题讨论】:
-
使用协程。
-
如果您的问题只是在延迟后销毁对象:
Destroy的过载会延迟几秒钟,例如Destroy(obj, 80.0f);
标签: c# unity3d gameobject