Unity SpriteRender和Image的区别

Image组件

渲染

  • 基于CanvasRender和Image组件进行渲染
  • 默认材质渲染队列为Transparent Geometry,开启模板测试,渲染顺序是基于Canvas的Order In Layer层级,由Canvas逻辑进行管理
  • 默认的渲染网格为正方形,更多的片元着色器操作
  • 可以实现基于图集打包和网格数据合并,在此Canvas下实现渲染批处理
交互

检测逻辑
  • 根据Unity层级面板顺序把Image组件加入队列,通过UGUI的EventSystem的Update来每帧遍历所有Canvas下需要检测的对象。通过Image组件的IsRaycastLocationValid方法来检测是否能穿透点击区域,中间的测试包含渲染图片的Alpha值,以及距形区域的交点测试。可以通过开关组件上的Raycast Target选项来控制是否需要响应对应的检测逻辑。
事件响应
  • 可以通过挂载UGUI自身继承IEventSystemHandler接口的组件,对相应组件添加事件来实现事件逻辑的响应,如Button,Toggle
使用

通常应用于UI界面,由于是UGUI自身的组件,提供了更多UI组件交互支持,而且Image组件统一交由Canvas进行管理,渲染顺序可以通过Unity检视面板层级直接看到,方便开发。完美的UI自适应方案,可以通过Canvas Scaler来实现渲染分辨率大小的自适应,以及基于RectTransform锚点位置来控制Image组件渲染网格的大小和位置。还有交互逻辑是通过二维的交点测试,性能更加优化。

总结


  • 完美适配UI界面的开发,当然,因为他就是UGUI的组件。 = =。

SpriteRender组件

渲染

  • 基于SpriteRender组件进行渲染
  • 默认材质渲染队列为Transparent Geometry,渲染顺序由所在渲染队列以及组件面板上的Order In Layer层级进行管理,如果在同一层级,则通过和摄像机的距离也就是Z轴顺序进行渲染
  • 默认的渲染网格根据图片透明通道,无像素着色的地方会被裁切掉,形成不规则网格,更多的顶点着色器操作
  • 可以实现基于图集打包和网格数据合并实现渲染批处理
交互

检测逻辑
  • 为GameObject挂载BoxCollider2D,通过Unity自身的射线进行逻辑检测
事件响应
  • 通过给GameObject挂载BoxCollider2D,实现MonoBehaviour上的方法来实现响应逻辑,如OnMouseDown。当然这样的方式大概不够优雅,我们可以通过编写一个实现所有MonoBehaviour事件方法的EventListener类再挂载到GameObject上为相应的脚本添加事件
使用

因为Mesh不会根据UI自适应进行拉伸,但是可以通过其Z轴来改变渲染顺序,通常应用于平面特效和3D场景中的平面物体。在UI画面中可以通过控制Order In Layer层级来控制渲染的层级,基于其默认的渲染队列,可以很好的和UI的层级区分开。在3D场景中,在和3D物体同一个渲染队列的情况下,可以很好的通过动画控制Z轴来实现与3D物体的遮挡关系。因为是Sprite所以可以实现基于图集和网格合并的批处理

总结


除了UI画面哪都好用,当然在你需要其自建网格和批处理渲染的情况下。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
回答: 在Unity中,RawImageImageSprite是三种不同的组件,它们有一些区别。 首先,渲染上的区别Image和RawImage都是通过UGUI的Image和CanvasRenderer组件来渲染的,而Sprite则是通过SpriteRenderer组件来渲染的。在视觉上,它们没有任何区别(都使用默认材质时),并且它们默认的渲染都是在Transparent Geometry队列中。 其次,使用方式的区别Image和RawImage主要用于UI显示,而Sprite主要用于游戏场景中的元素渲染。在2D游戏开发中,应该尽量使用Sprite去渲染游戏场景中的元素,因为Sprite会创建额外的几何体来裁剪掉多余的透明像素区域,从而减少了大量的片段着色器运算,并降低了overdraw。而Image应该仅用于UI显示,因为它可能会被Canvas改变显示位置和实际大小,可能会造成跟预期设计不一致的显示结果。 最后,性能上的区别。由于Sprite的顶点数据更加复杂,在进行顶点计算时会比Image效率更低。但是在大量2D精灵存在的场景中,Sprite反而比Image拥有更好的效率,因为Sprite通过增加顶点而裁剪掉的部分减少了相当多的运算次数。而Image执行更多的片段着色器运算,因为它是针对每个像素运算的。随着2D元素数量的增加,这种差别会逐渐明显起来。 综上所述,Unity中的RawImageImageSprite在渲染方式、使用方式和性能上都有一些区别。根据具体的需求和场景,选择合适的组件来使用。 #### 引用[.reference_title] - *1* *3* [Unity2D:SpriteImage区别](https://blog.csdn.net/a435931517/article/details/84564155)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [unity如何把RawImageRenderTure图片转化成Sprite](https://blog.csdn.net/lucky_XiaoZhang/article/details/128004985)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值