在團結我正在做一個程序,讓你點擊一個立方體,並選擇代表頂點領域,如下圖所示:如何修改統一的兩個類之間的List <>?
球被選中,他們將被添加到一旦論文列表selectedSpheres
類型GameObject
。
我創建了兩個類文件 - Cube.cs
和Vertex.cs
。 Vertex
繼承Cube
,它繼承自MonoBehaviour
。在多維數據集中,我有一個存儲選定球體的成員列表。
我已經定義了一個函數addToSelected()
,它將輸入添加到selectedSpheres
列表中。函數內部的print語句每次都打印出true。但在Update()
功能的打印語句打印的參數超出範圍的錯誤,如下圖所示,而addToSelected()
已經表明,它一直8次:
的addToSelected()
功能是從內部的OnMouseDown()
函數調用Vertex
類。兩個類的代碼如下所示:
Cube.cs
public class Cube : MonoBehaviour {
bool isSelected = false;
GameObject[] Spheres;
List<GameObject> selectedSpheres = new List<GameObject>();
public void addToSelected(GameObject obj) {
selectedSpheres.Add(obj);
print(selectedSpheres.Contains(obj));
}
public void removeSelected(GameObject obj) {
selectedSpheres.Remove(obj);
}
public void clearSelected() {
selectedSpheres.Clear();
}
// Update is called once per frame
void Update() {
if(Input.GetKeyDown(KeyCode.Space)) {
print(selectedSpheres[0]);
}
}
}
Vertex.cs
public class Vertex : Cube {
void OnMouseDown() {
// this object was clicked - do something
Renderer rend = GetComponent<Renderer>();
if (rend.material.color != Color.red) {
rend.material.color = Color.red; // #d96459
addToSelected(this.gameObject);
} else {
rend.material.color = Color.white;
removeSelected(this.gameObject);
}
}
}
工作,謝謝。不過,我很好奇爲什麼使它私人不起作用?如果它是私人的,Vertex不應該繼承Cube中的'selectedSpheres',所以我認爲它會起作用。 – ryanmattscott
等一下,沒關係,如果我將'selectedSpheres'私人化並對'Update'函數做了一個覆蓋,那麼它應該工作 – ryanmattscott