因此,我將此代碼附加到Quad。有時Unity中的OnMouseDown()方法執行,有時它不會
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]);
shape.AddComponent<ShapeBehavior>();
Vector3 pos = shapes [shapeId].transform.position;
pos.x = (float)x*3;
pos.y = (float)y*3;
shapes [shapeId].transform.position = pos;
}
}
}
上面的腳本在運行時生成的遊戲對象,向其中我分配另一個腳本:
public class ShapeBehavior : MonoBehaviour {
void OnMouseDown(){
Debug.Log ("Destroy");
Destroy (gameObject);
}
}
的問題是,有時onmousedown事件()執行,有時它沒有。我無法弄清楚爲什麼,以及如何解決它。
ShapeGrid類中的形狀已經有一個碰撞器。因此,如果我在每個克隆的遊戲對象上添加碰撞器,我都會收到此錯誤:無法將組件'BoxCollider'添加到圓圈(克隆),因爲它與現有的'BoxCollider2D'派生組件衝突! – jeanl
你說「有時候」,你可以檢查問題是否存在於同一個對象上,或者是這個隨機的東西嗎?你也可以檢查圖層,對象不能在忽略Raycast圖層上。 –
一直試圖找到一種模式。我認爲這是隨機的。我不認爲我使用Raycasts – jeanl