2017-03-31 88 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