Jac*_*ler 6 c# unity-game-engine
我正在尝试使用C#来禁用和启用MeshRenderUnity3d中的组件,但是我收到以下错误,
错误CS0120:访问非静态成员`UnityEngine.GameObject.GetComponent(System.Type)'需要对象引用
我正在使用的代码行如下.我在同一个功能中使用它.
MeshRenderer showZone = GameObject.GetComponent<MeshRenderer>();
Run Code Online (Sandbox Code Playgroud)
此外,我在这里发布而不是Unity Answers,因为我在这里获得了更快的响应,无论结果如何,它总是有用的信息.
Ste*_*ann 18
你遇到了几个问题.首先,您尝试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;
}
Run Code Online (Sandbox Code Playgroud)
您可以使用go.GetComponent<MeshRenderer>().enabled = false;而不是go.renderer. enabled = false;通过使用renderer您不需要知道使用什么类型的渲染器GameObject.它可以是a MeshRenderer或者SpriteRenderer例如,renderer总是指向由GameObject(如果存在)渲染器使用的渲染器.
看文档:
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
void Example() {
renderer.enabled = false;
}
}
Run Code Online (Sandbox Code Playgroud)
链接: http: //docs.unity3d.com/ScriptReference/Renderer-enabled.html 更改编程语言右上角。