如何销毁克隆对象(复杂的问题,请参阅我的问题正文以了解)?

How can I destroy a cloned object (Complicated question, see body of my question to understand)?

我有一个 3d 游戏,当我的玩家激活一个按钮时,它会生成一个对象的克隆(使用实例化)。我不希望我的播放器一次能够拥有超过 1 个盒子(克隆)。因此,如果玩家单击按钮生成一个克隆,并且已经存在一个克隆,我想销毁已经存在的克隆。我将把我用来生成克隆的代码放在下面。 (请注意,void OnMouseDown 和 OnMouseUp 中的“transform.position”用于在按下时更改按钮的外观)

public class Button : MonoBehaviour {

public刚体框;

void OnMouseDown()
{
    transform.position = new Vector3(-3.5f, 1.45f, 7.0f);

    Rigidbody clone;
    clone = Instantiate(box, new Vector3(0f, 10f, 11f), transform.rotation);
}

void OnMouseUp()
{
    transform.position = new Vector3(-3.5f, 1.5f, 7.0f);
}

}

您需要像对待原始盒子一样将“克隆”存储在 class 参考中,并检查它是否不为空。如果它存在,那么就销毁。

public class Button : MonoBehaviour {
    public Rigidbody box;
    public Rigidbody clone;

    void OnMouseDown()
    {
        transform.position = new Vector3(-3.5f, 1.45f, 7.0f);
        if(clone != null)
        {
             Destroy(clone);
        }
        clone = Instantiate(box, new Vector3(0f, 10f, 11f), transform.rotation);
    }

    void OnMouseUp()
    {
        transform.position = new Vector3(-3.5f, 1.5f, 7.0f);
    }
}