我正在尝试使用C#禁用和启用Unity3d中的MeshRender
组件,但是出现以下错误,
我正在使用的代码行如下。我在同一函数中使用它。
MeshRenderer showZone = GameObject.GetComponent<MeshRenderer>();
另外,我在这里发布的不是Unity Answers,因为我在这里得到的响应速度更快,并且无论结果如何,它始终是有用的信息。
最佳答案
您遇到了一些问题。首先,您尝试在类而不是对象的实例上使用GetComponent<>
。这直接导致您的第二个问题。搜索特定的GameObject
后,您不使用结果,而是尝试禁用包含脚本的GameObject
的呈现器。第三,C#区分大小写,Renderer
是一个类,而renderer
是对附加到Renderer
的GameObject
实例的引用
此代码段结合了所有内容:查找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
使用哪种类型的渲染器。例如,它可以是MeshRenderer
或SpriteRenderer
,如果存在,renderer
始终指向GameObject
使用的渲染器。关于c# - Unity3d MeshRender,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24231669/