【发布时间】:2016-07-05 03:07:49
【问题描述】:
我试图在“x”时间重生一个对象,但是当我使用 yield 和 startcourutine 时,它会在我的代码中导致很多错误和错误。而不是破坏我想隐藏对象并在延迟后重生时再次启用它。如果我有数组,这怎么可能?
【问题讨论】:
标签: c# unity3d unity5 timedelay
我试图在“x”时间重生一个对象,但是当我使用 yield 和 startcourutine 时,它会在我的代码中导致很多错误和错误。而不是破坏我想隐藏对象并在延迟后重生时再次启用它。如果我有数组,这怎么可能?
【问题讨论】:
标签: c# unity3d unity5 timedelay
要在同一位置直接重生,您可以这样做:
public class CrateCrash : MonoBehaviour
{
...
public void InitRespawn(GameObject toRespawn)
{
StartCoroutine(RespawnObject(toRespawn, 5.0f));
}
private IEnumerator RespawnObject(GameObject toRespawn, float delay)
{
yield return new WaitForSeconds(delay);
toRespawn.SetActive(true);
}
}
其他类:
using UnityEngine;
using System.Collections;
public class Crate : MonoBehaviour
{
CrateCrash manager;
public void OnMouseDown()
{
manager.InitRespawn(gameObject);
gameObject.SetActive(true);
}
public void SetManagerReference(CrateCrash managerRef)
{
manager = managerRef;
}
}
【讨论】:
RespawnObject() 协程。
SetActive)中调用它们并将游戏对象作为参数传递。然后不要使用Instantiate,而是在那里调用SetActive(并设置位置,不管你在SetActive之前还是之后这样做都没有关系)。