如何销毁克隆对象(复杂的问题,请参阅我的问题正文以了解)?
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);
}
}
我有一个 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);
}
}