游戏开发中 Sprite 和 Image 的区别

您所在的位置:网站首页 picture和image想象的区别 游戏开发中 Sprite 和 Image 的区别

游戏开发中 Sprite 和 Image 的区别

2023-09-06 19:37| 来源: 网络整理| 查看: 265

在开发中,有的时候会遇到一些奇奇怪怪的问题,比如说在3D游戏开发中需要制作一个 主角血条或者 敌人血条的时候,一般来说有两种方式,一个是 使用 Canvas 制作一张 Image 进行渲染,一个是使用 SpriteRenderer 进行渲染,如果使用 Image进行渲染的话每一个敌人都得引用一个 Image进行实时的渲染,那么可能效果上没有区别,但是本质上却又很多的差异; Image:使用 Canvas Renderer进行渲染, Sprite Renderer:本质是一张半透明的 texture。在导入的时候被设置成为 Sprite,是被渲染到 2D / 3D 场景或者其他界面的图片。 两者在视觉上没有任何区别(都使用默认材质时)。它们默认的渲染也都是在Transparent Geometry队列中。 在场景中,你 的 Sprite 可以随便的进行摆放,但是你 的 Image 不得不放在 Canvas 下边,这样来看的话,Image 有了一些的局限性,继续往下边走,Sprite和Image的一个最重要的区别在于Sprites支持网格的自动构造,而UI Image的网格始终由矩形构成。 在这里插入图片描述                                                                        Sprite                                   Image

上图中可以看到,UI Image创造了一个紧密的矩形来包裹Sprite,而SpriteRenderer创造了一个能更好匹配将要渲染的sprite的网格。 Sprite由于顶点数据更加复杂,在进行顶点计算时会比Image效率更低; Sprite会比Image执行较多的顶点着色器运算; Image会比Sprite执行更多的片段着色器运算 由于片段着色器是针对每个像素运算,Sprite通过增加顶点而裁剪掉的部分减少了相当多的运算次数,在绝大多数情况下,反而比Image拥有更好的效率(尤其是场景中有大量的2D精灵时)。SpriteRenderer会创建额外的几何体来裁剪掉多余的透明像素区域,从而减少了大量的片段着色器运算,并降低了overdraw;而Image则会创建简单的矩形几何体。随着2D元素数量的增加,这种差别会慢慢明显起来。 因此在2D游戏开发中,游戏场景中的元素,应该尽量使用它去渲染。而Image应该仅用于UI显示(实际上即使不考虑性能原因,由于屏幕分辨率的变化,Image可能会被Canvas改变显示位置和实际大小,如果用于游戏内元素的显示,可能会造成跟预期设计不一致的显示结果,也应该避免使用)。 回到主题,SpriteRenderer和UI Image之间的区别是什么?显而易见,sprites的开销更大,因为它的几何数据更复杂。但是如果我告诉你顶点操作通常比片元操作开销小的多呢?尤其对于移动设备和半透明对象。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3