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)
试图搜索这两个组件之间的区别,但没有找到任何有用的东西。?
MeshRenderer 和 Renderer 组件的区别
还有MeshRenderer用于显示3D对象/模型。还有SpriteRenderer用于显示像精灵这样的 2D 图像。该Renderer部件是一个简单的基类, MeshRenderer 并SpriteRenderer导出来自。该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 的组件。例如,SpriteRenderer和MeshRenderer。