我正在尝试在Unity中制作2D我的世界版本,该地形是通过在GameObject预制件的副本中生成来生成地形的。我想知道是否有任何方法可以通过单击鼠标来销毁特定的GameObject?
答案 0 :(得分:2)
如果您在2D项目中使用EventSystem, 考虑将该脚本附加到您的预制件上。
class Destroyable : MonoBehaviour, IPointerClickHandler {
public void OnPointerClick(PointerEventData eventData)
{
Destroy(gameObject);
}
}
答案 1 :(得分:1)
是的添加对撞机和以下脚本:
void OnMouseDown(){
Destroy(this.gameObject);
}
这将摧毁您单击的所有对象,只要它具有对撞器
答案 2 :(得分:0)
您可以使用OnMouseDown。在其中,您必须使用Destroy安全删除游戏对象(免费资源),并使用SetActive(false)使对象“不可见”并且不能被玩家使用,因为Destroy()不能保证立即生效。
void OnMouseDown(){
this.gameObject.SetActive(false);
Destroy(this.gameObject);
}
或者,您可以使用raycast,但是核心代码是相同的。两种解决方案都要求对象具有对撞机。