MeshRenderer 和 Renderer 组件的区别

Muh*_*han 3 c# unity-game-engine

我有这个代码

GetComponent<MeshRenderer>().bounds
Run Code Online (Sandbox Code Playgroud)

和这个

GetComponent<Renderer>().bounds
Run Code Online (Sandbox Code Playgroud)

试图搜索这两个组件之间的区别,但没有找到任何有用的东西。?

Per*_*eak 9

MeshRenderer 和 Renderer 组件的区别

还有MeshRenderer用于显示3D对象/模型。还有SpriteRenderer用于显示像精灵这样的 2D 图像。该Renderer部件是一个简单的基类, MeshRendererSpriteRenderer导出来自。该bounds变量在 Renderer 中声明,因此从MeshRenderer或访问它Renderer 会给你相同的值。因为SpriteRenderer也派生自Renderer,所以您可以访问Renderer 类中的其他变量。

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

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

例如,您可以这样做:

GetComponent<Renderer>()
Run Code Online (Sandbox Code Playgroud)

但你不能这样做:

gameObject.AddComponent<Renderer>()
Run Code Online (Sandbox Code Playgroud)

并将得到以下异常:

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

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