我创建了一个Quad.我将此脚本分配给包含游戏对象数组的Quad:
public class ShapeGrid : MonoBehavIoUr { public GameObject[] shapes; void Start(){ GameObject[,] shapeGrid = new GameObject[3,3]; StartCoroutine(UpdateGrid()); } IEnumerator UpdateGrid(){ while (true) { SetGrid (); yield return new WaitForSeconds(2); } } void SetGrid(){ int col = 3,row = 3; for (int y = 0; y < row; y++) { for (int x = 0; x < col; x++) { int shapeId = (int)Random.Range (0,4.9999f); GameObject shape = Instantiate (shapes[shapeId]); Vector3 pos = shapes [shapeId].transform.position; pos.x = (float)x*3; pos.y = (float)y*3; shapes [shapeId].transform.position = pos; } } } }
我克隆了那些游戏对象,以便它们出现在这样的网格上:
当用户单击一个对象时,它应该消失.我所做的是将此脚本放在我的Game Objects数组中的每个元素上:
public class ShapeBehavior : MonoBehavIoUr { void Update(){ if(Input.GetMouseButtonDown(0)){ Destroy(this.gameObject); } } }
但是当我点击一个对象来销毁它时,会破坏该对象的每个克隆.我只希望销毁特定的克隆,而不是一切.我怎么做?
解决方法
问题在于您的Input调用,当您单击鼠标上的按钮时,无论鼠标的位置如何,每个脚本中的“Input.GetMouseButtonDown(0)”都为true.将任何类型的对撞机附加到gameObject并进行设置并使用OnMouseDown()方法放置脚本,请在此处查看更多信息:
http://docs.unity3d.com/ScriptReference/MonoBehaviour.OnMouseDown.html
也可以用gameObject替换this.gameObject.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。