【问题标题】:How can i add a renderer to gameobject in script?如何在脚本中向游戏对象添加渲染器?
【发布时间】:2017-03-31 21:05:42
【问题描述】:
GameObject cube = Cube.CreatePrimitive(Cube.CubePivotPoint.UPLEFT);
cube.GetComponent<Renderer>().material.color = Color.blue;

当我分配颜色时,我在线上遇到异常:

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

MissingComponentException:“CubeHolder”游戏对象没有附加“Renderer”,但脚本正在尝试访问它。 您可能需要将渲染器添加到游戏对象“CubeHolder”。或者您的脚本需要在使用之前检查组件是否已附加。

注意

我正在使用来自this 答案的CUBE 类来创建一个立方体,而不是Unity 的GameObject.CreatePrimitive 函数。

【问题讨论】:

    标签: c# unity3d unity5


    【解决方案1】:

    当我写CUBE class 时,我忘了提到立方体的渲染器现在是另一个对象的子对象。

    您无需将RendererMeshRenderer 添加到多维数据集。它已经在那里了。立方体只是一个子对象,父对象名为 CubeHolder。您需要使用GetComponentInChildren 来获取它的Renderer

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

    现在应该是:

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

    【讨论】:

    • 您是否也可以编辑问题本身以包括 OP 正在使用这个特定类而不仅仅是任何游戏对象这一事实? (因为它目前有点 XY 问题,也缺少 MCVE)。 @Sharon Giselle 也可以/应该这样做。
    • 包含在内,因为 OP 在问题中说 Cube.CreatePrimitive(Cube.CubePivotPoint.UPLEFT);。尽管链接到那个旧答案会很好。我会这样做的。
    猜你喜欢
    • 1970-01-01
    • 2021-11-24
    • 2020-09-03
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多