2017-03-31 27 views
0
GameObject cube = Cube.CreatePrimitive(Cube.CubePivotPoint.UPLEFT); 
cube.GetComponent<Renderer>().material.color = Color.blue; 

當我指定我上線越來越異常的顏色:如何在腳本中將渲染器添加到gameobject?

cube.GetComponent<Renderer>().material.color = Color.blue; 

MissingComponentException:沒有「渲染」附在「CubeHolder」遊戲對象,而是一個腳本試圖訪問它。 您可能需要將渲染器添加到遊戲對象「CubeHolder」中。或者您的腳本在使用之前需要檢查組件是否已連接。

注意

我使用CUBE類從this答案創建多維數據集,而不是統一的GameObject.CreatePrimitive功能。

回答

1

當我編寫CUBE class時,我忘了提及立方體的渲染器現在是另一個對象的孩子。

您不需要將RendererMeshRenderer添加到多維數據集。它已經在那裏了。該多維數據集只是一個子對象,父對象被命名爲CubeHolder。您需要使用GetComponentInChildren才能獲得其Renderer

cube.GetComponent<Renderer>().material.color = Color.blue; 

現在應該是:

cube.GetComponentInChildren<Renderer>().material.color = Color.blue; 
+0

你能也許還可以編輯這個問題本身包含了OP使用這個特定的類,不是任何遊戲物體的事實呢? (因爲它目前有點XY問題,也缺乏MCVE)。 @沙龍吉賽爾也可以/應該這樣做。 – Keiwan

+0

這是包括,因爲它OP說'Cube.CreatePrimitive(Cube.CubePivotPoint.UPLEFT);'在問題中。儘管鏈接到舊的答案會很好。我去做。 – Programmer