我在unity3d中遇到了一個問題,那裏有一個gameobject,它是一個簡單的多維數據集,它附有一個名爲Material
的組件,它是紅色的。此外還有一個腳本附加到這個正在執行左鍵點擊事件的立方體上,即它將材料的顏色改變爲綠色。腳本 工作正常,但我想在場景中有canvas
gameobject
這是默認無效。 我想要 當材質顏色爲綠色時激活此gameobject,或當顏色爲紅色時停用。我正在使用 函數
GameObject.Find("Canvas")
,但錯誤即將到來。此外,我嘗試通過調用此功能GameObject.FindWithTag("Canvas")
使用此畫布上的標籤來解決此問題,但沒有任何效果。同樣的錯誤即將到來。Gameobject在鼠標點擊時不活躍
NullReferenceException: Object reference not set to an instance of an object
代碼:
public class Cube : MonoBehaviour {
[SerializeField] private bool check;
void OnMouseDown() {
if (!check) {
gameObject.GetComponent<Renderer>().material.color = Color.green;
GameObject.Find("Canvas").SetActive(true);
check = true;
} else if (check) {
gameObject.GetComponent<Renderer>().material.color = Color.red;
check = false;
}
}
}
好吧,我明白了!我可以只激活gameobject的孩子嗎? – hamel123
您可以不活動任何遊戲對象,但GameObject.FindWithTag不適用於隱藏的對象或隱藏父對象的對象。當它處於活動狀態時,您需要獲取對象的引用,或者像我在回答中那樣通過將引用拖動到對象中來執行它。 – Programmer