目录
零.简介
一、基本功能
二、属性和设置
三、与其他 UI 元素的配合
四、代码控制
六. 和 image的区别
零.简介
在 Unity 中,RawImage 是一种用于显示原始图像的 UI 组件。
一、基本功能
- 显示图像:RawImage 主要用于在 UI 中直接显示一张图像。可以将图像资源(如 Texture2D、Sprite 等)分配给 RawImage 的
texture
属性,以在屏幕上呈现图像。 - 支持多种图像格式:可以显示各种常见的图像格式,如 PNG、JPEG 等。它能够自动适应图像的尺寸和比例,确保图像在 UI 中正确显示。
- 比如前面介绍的用来显示视频纹理
二、属性和设置
texture
:这是 RawImage 最重要的属性,用于指定要显示的图像资源。可以在 Inspector 窗口中通过拖放图像资源到该属性上来设置。color
:用于调整图像的整体颜色。可以通过设置颜色的 RGB 值和透明度来改变图像的外观。例如,可以将颜色设置为半透明以实现淡入淡出效果。uvRect
:允许你指定图像的 UV 坐标范围,从而可以显示图像的一部分。这对于实现图像裁剪、动画帧播放等效果非常有用。
三、与其他 UI 元素的配合
- 可以与其他 UI 组件(如按钮、面板等)结合使用,以创建丰富的用户界面。例如,可以将 RawImage 作为按钮的背景图像,或者在面板中显示多个 RawImage 来展示一组图片。
- 通过调整 RawImage 的 Rect Transform(矩形变换),可以控制图像的大小、位置和旋转。可以将其锚定在特定的位置,以适应不同的屏幕尺寸和分辨率。
四、代码控制
- 通过脚本可以动态地更改 RawImage 显示的图像。例如:
using UnityEngine;
using UnityEngine.UI;
public class RawImageController : MonoBehaviour
{
public RawImage myRawImage;
void Start()
{
// 加载图像资源并设置给 RawImage
Texture2D newTexture = Resources.Load<Texture2D>("MyImage");
myRawImage.texture = newTexture;
}
}
- 可以在运行时修改 RawImage 的其他属性,如颜色、UV 坐标等,以实现动态的视觉效果。
五、优化和注意事项
- 性能考虑:显示大尺寸或高分辨率的图像可能会对性能产生影响。尽量使用适当大小的图像资源,并根据实际需求进行压缩和优化。同时,避免在每一帧都频繁更新 RawImage 的图像资源,以提高性能。
- 资源管理:确保正确加载和释放图像资源,以避免内存泄漏。在不再需要显示特定图像时,及时将其从 RawImage 的
texture
属性中移除,并释放相关的资源。 - 兼容性:不同的图像格式和纹理类型可能在不同的平台上有不同的表现。在开发过程中,要在多个平台上进行测试,确保 RawImage 能够正确显示各种图像资源。
- 图像加载时间:如果图像资源较大或需要从网络加载,可能会导致加载时间较长。可以考虑使用异步加载或预加载技术,以减少用户等待时间。
六. 和 image的区别
功能特性
RawImage:
- 主要用于显示原始的纹理(Texture)数据,可以直接接受 Texture2D、RenderTexture 等类型的图像资源。
- 不支持 Sprite(精灵图)作为图像资源。
- 通常用于显示动态生成的图像、视频帧或从外部获取的纹理数据。
- 没有自动适应图像大小和比例的功能,需要手动调整 Rect Transform(矩形变换)来控制图像的显示尺寸。
Image:
- 专门设计用于显示 Sprite(精灵图)资源,同时也可以接受 Texture2D 类型的图像资源。
- 具有自动适应图像大小和比例的功能,可以根据图像的原始尺寸和 Rect Transform 的设置来自动调整显示效果。
- 支持九宫格切片(Sliced)、平铺(Tiled)、填充(Filled)等特殊的显示模式,适用于制作按钮、边框等 UI 元素。
- 通常用于显示游戏中的静态图标、界面元素等。
属性和设置
RawImage:
- 主要属性包括
texture
(用于设置显示的纹理)、color
(调整图像颜色)等。- 没有 Image 中的
sprite
属性和相关的 Sprite 设置选项。Image:
- 具有
sprite
属性用于设置显示的 Sprite 资源,同时还有color
、material
(材质)等属性。- 可以通过设置
Image Type
(图像类型)来选择不同的显示模式,如 Simple(简单)、Sliced(切片)、Tiled(平铺)、Filled(填充)等。
使用场景
RawImage:
- 当需要显示实时生成的图像数据(如从相机获取的视频帧)或动态加载的纹理资源时,RawImage 是一个合适的选择。
- 用于显示非传统的图像格式或需要直接操作纹理数据的情况。
- 例如,在制作视频播放器界面时,可以使用 RawImage 来显示视频帧。
Image:
- 适用于显示游戏中的静态 UI 元素,如图标、按钮背景等。
- 当需要利用 Sprite 的特殊显示模式来制作可拉伸、可重复的 UI 元素时,Image 更加方便。
- 例如,制作游戏菜单界面时,使用 Image 来显示各种图标和按钮。
性能影响
RawImage:
- 由于没有自动适应图像大小和比例的功能,可能需要更多的手动调整和计算,在某些情况下可能会增加开发的复杂性。
- 显示大尺寸的纹理数据可能会对性能产生较大影响,需要注意内存和 GPU 资源的使用。
Image:
- 自动适应功能可以简化开发过程,但在某些情况下可能会导致不必要的图像缩放,影响图像质量。
- 对于复杂的 Sprite 显示模式,可能会有一定的性能开销,特别是在处理大量 UI 元素时。
所以在制作 UI 图片时,Image 通常是更合适的选择.