Unity-暂时分解对象

问题描述 投票:0回答:1

我想制作可以在一段时间内消失的游戏对象

我写了这段代码,但是根本没用

这是我的代码

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);
    }

}

有人可以帮忙弄清楚吗?

c# unity3d
1个回答
0
投票
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. }

© www.soinside.com 2019 - 2024. All rights reserved.