我想制作可以在一段时间内消失的游戏对象
我写了这段代码,但是根本没用
这是我的代码
public class Fire : MonoBehaviour
{
[SerializeField] int decreaseHealth;
[SerializeField] GameObject handlerObject;
GameHandler handler;
void Start()
{
decreaseHealth = 10;
handler = handlerObject.GetComponent<GameHandler>();
}
void OnTriggerEnter2D(Collider2D col)
{
if (col.gameObject.tag == "Player")
{
StartCoroutine(ShowAndHide(this.gameObject, 2.0f)); // 2 second
//Decrese Health
handler.decreaseHealth(decreaseHealth);
Destroy(this.gameObject);
}
}
IEnumerator ShowAndHide(GameObject go, float delay)
{
go.SetActive(true);
yield return new WaitForSeconds(delay);
go.SetActive(false);
}
}
有人可以帮忙弄清楚吗?
StartCoroutine(ShowAndHide(this.gameObject, 2.0f)); // 2 second
//Decrese Health
handler.decreaseHealth(decreaseHealth);
Destroy(this.gameObject); // <- this
您隐藏了要隐藏并显示的游戏对象。协程与其他代码异步运行,因此,如果要在隐藏自身后销毁它,请改为在协程中进行处理,如下所示:
IEnumerator ShowAndHide(GameObject go, float delay) { go.SetActive(true); yield return new WaitForSeconds(delay); go.SetActive(false); Destroy(go); // Destroy after it has hidden itself. }