UGUI(七)- RawImage

25 篇文章 1 订阅
14 篇文章 0 订阅

RawImage 与 Image

二者都是 UGUI 的图片组件,都继承自 MaskableGraphic, RawImage 相对 Image 功能简单很多,是 Image 的乞丐版

RawImage


  • Texture 指定要显示的图片,资源类型是 Texture ,如果此项属性未指定图片资源并且 Material 未指定时,则控件以 Color 属性的颜色填充

  • Color 颜色值, 如果 Texture 和 Material 未指定时,则控件显示该属性颜色;如果 Texture 有指定值,则控件最终以指定图片和Color混合值(相乘)

  • Material 材质, Texture 未指定时,控件以 Material 显示

  • Raycast Target 是否可以被射线检测到

  • UV Rect 控件 UV 选项,用于控件图片按 UV 值显示整张图片或部分图片

补充 UV Rect

UV 是指把图片的宽高 以 0-1 开区间划分图片上的点,以便于在渲染时进行映射采样(获取图片上对应坐标的颜色值)。

上图中 X 为横向采样坐标起点, W 为横向采样宽度;Y 为竖向采样坐标起点,H 为竖向采样高度。这四个值构成一个矩形,即图片上的采样区间。默认情况下 X:0 W:1 Y:0 H:1 采样区间为整张图片, 而当 X:0.5 W:0.5 Y:0 H:0.5 时,采样区间为图片的右下四分之一。

那么问题来了,当 X:0.5 W:1 Y:0 H:1 时,横向采样起始点是 0.5, 终点是1.5 已经超出图片的横向最大值1,这时控件应该怎么显示?先来看两张图

上面第1张图横向1-1.5的部分其实是取的原图中最右侧边上的像素进行的延伸,所以看起来是一条条颜色不同的线,线的颜色与x:1处的颜色值相同。
第2张图横向1-1.5的部分是对原图中0-0.5的采样
第3张图横向1-1.5的部分是对前面部分的镜像

不同延伸模式的控制是在图片的导入模式中控制

  • Repeat 平铺重复(即对超出1的坐标对1取模后的值再进行采样)
  • Clamp 超出1的坐标取样为原图上X=1的颜色值
  • Mirror 对横向或竖向的前一部分做镜像
  • Mirror Once 仅做一次镜向,超出镜向坐标范围后采用Clamp模式
  • Pre-axis 分开指定横向或纵向的延伸模式

Repeat、Clamp、Mirror示例


Mirror Once 示例


欢迎关注公众号,定期分享Unity的实用技巧~~
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在Unity中,RawImageImage和Sprite是三种不同的组件,它们有一些区别。 首先,渲染上的区别。ImageRawImage都是通过UGUIImage和CanvasRenderer组件来渲染的,而Sprite则是通过SpriteRenderer组件来渲染的。在视觉上,它们没有任何区别(都使用默认材质时),并且它们默认的渲染都是在Transparent Geometry队列中。 其次,使用方式的区别。ImageRawImage主要用于UI显示,而Sprite主要用于游戏场景中的元素渲染。在2D游戏开发中,应该尽量使用Sprite去渲染游戏场景中的元素,因为Sprite会创建额外的几何体来裁剪掉多余的透明像素区域,从而减少了大量的片段着色器运算,并降低了overdraw。而Image应该仅用于UI显示,因为它可能会被Canvas改变显示位置和实际大小,可能会造成跟预期设计不一致的显示结果。 最后,性能上的区别。由于Sprite的顶点数据更加复杂,在进行顶点计算时会比Image效率更低。但是在大量2D精灵存在的场景中,Sprite反而比Image拥有更好的效率,因为Sprite通过增加顶点而裁剪掉的部分减少了相当多的运算次数。而Image执行更多的片段着色器运算,因为它是针对每个像素运算的。随着2D元素数量的增加,这种差别会逐渐明显起来。 综上所述,Unity中的RawImageImage和Sprite在渲染方式、使用方式和性能上都有一些区别。根据具体的需求和场景,选择合适的组件来使用。 #### 引用[.reference_title] - *1* *3* [Unity2D:Sprite和Image的区别](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如何把RawImage的RenderTure图片转化成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 ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值