我正在尝试使用C#禁用和启用Unity3d中的MeshRender组件,但是出现以下错误,



我正在使用的代码行如下。我在同一函数中使用它。

MeshRenderer showZone = GameObject.GetComponent<MeshRenderer>();

另外,我在这里发布的不是Unity Answers,因为我在这里得到的响应速度更快,并且无论结果如何,它始终是有用的信息。

最佳答案

您遇到了一些问题。首先,您尝试在类而不是对象的实例上使用GetComponent<>。这直接导致您的第二个问题。搜索特定的GameObject后,您不使用结果,而是尝试禁用包含脚本的GameObject的呈现器。第三,C#区分大小写,Renderer是一个类,而renderer是对附加到RendererGameObject实例的引用

此代码段结合了所有内容:查找GameObject并禁用其渲染器

GameObject go = GameObject.FindWithTag("zone1");
if (go != null) { // the result could be null if no matching GameObject is found
  go.renderer.enabled = false;
}

您可以使用go.GetComponent<MeshRenderer>().enabled = false;代替go.renderer. enabled = false;,但是通过使用renderer,您不需要知道GameObject使用哪种类型的渲染器。例如,它可以是MeshRendererSpriteRenderer,如果存在,renderer始终指向GameObject使用的渲染器。

关于c# - Unity3d MeshRender,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24231669/

10-14 05:43