Unity3d MeshRender

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(如果存在)渲染器使用的渲染器.


Sem*_*tus 0

看文档:

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 更改编程语言右上角。