MeshRenderer和Renderer组件之间的区别

时间:2018-11-29 06:22:44

标签: c# unity3d

我有这个代码

GetComponent<MeshRenderer>().bounds

还有这个

GetComponent<Renderer>().bounds

试图search两者之间有什么区别,但没有发现任何帮助。

1 个答案:

答案 0 :(得分:3)

  

MeshRenderer和Renderer组件之间的区别

MeshRenderer用于显示3D对象/模型。还有SpriteRenderer用于显示2D图像(如精灵)。 Renderer组件只是MeshRendererSpriteRenderer派生的基类。 bounds变量是在Renderer中声明的,因此从MeshRendererRenderer对其进行访问将为您提供相同的值。由于SpriteRenderer也源自Renderer,因此您可以访问Renderer类中的其他变量。

因此,GetComponent<MeshRenderer>().boundsGetComponent<Renderer>().bounds在做同样的事情。第一个将获取MeshRenderer并从bounds父类访问Renderer变量。第二个变量将获得Renderer并直接从中访问bounds变量。

值得注意的是,您无法将Renderer附加到GameObject。您可以从GameObject访问它,但不能附加它。

例如,您可以执行以下操作:

GetComponent<Renderer>()

但是您不能这样做:

gameObject.AddComponent<Renderer>()

,并在下面得到异常:

  

无法添加类型为“ Renderer”的组件,因为它是抽象的。加   而是从“ Renderer”派生的类型的组件。

只有从Renderer派生的组件才可以附加到GameObject。例如,SpriteRendererMeshRenderer