Unity(2022.3.41LTS) - UI详细介绍- 原始图像

目录

零.简介

一、基本功能

二、属性和设置

三、与其他 UI 元素的配合

四、代码控制

六. 和 image的区别



零.简介

在 Unity 中,RawImage 是一种用于显示原始图像的 UI 组件。

一、基本功能

  1. 显示图像:RawImage 主要用于在 UI 中直接显示一张图像。可以将图像资源(如 Texture2D、Sprite 等)分配给 RawImage 的 texture 属性,以在屏幕上呈现图像。
  2. 支持多种图像格式:可以显示各种常见的图像格式,如 PNG、JPEG 等。它能够自动适应图像的尺寸和比例,确保图像在 UI 中正确显示。
  3. 比如前面介绍的用来显示视频纹理

二、属性和设置

  1. texture:这是 RawImage 最重要的属性,用于指定要显示的图像资源。可以在 Inspector 窗口中通过拖放图像资源到该属性上来设置。
  2. color:用于调整图像的整体颜色。可以通过设置颜色的 RGB 值和透明度来改变图像的外观。例如,可以将颜色设置为半透明以实现淡入淡出效果。
  3. uvRect:允许你指定图像的 UV 坐标范围,从而可以显示图像的一部分。这对于实现图像裁剪、动画帧播放等效果非常有用。

三、与其他 UI 元素的配合

  1. 可以与其他 UI 组件(如按钮、面板等)结合使用,以创建丰富的用户界面。例如,可以将 RawImage 作为按钮的背景图像,或者在面板中显示多个 RawImage 来展示一组图片。
  2. 通过调整 RawImage 的 Rect Transform(矩形变换),可以控制图像的大小、位置和旋转。可以将其锚定在特定的位置,以适应不同的屏幕尺寸和分辨率。

四、代码控制

  1. 通过脚本可以动态地更改 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;
    }
}
  1. 可以在运行时修改 RawImage 的其他属性,如颜色、UV 坐标等,以实现动态的视觉效果。

五、优化和注意事项

  1. 性能考虑:显示大尺寸或高分辨率的图像可能会对性能产生影响。尽量使用适当大小的图像资源,并根据实际需求进行压缩和优化。同时,避免在每一帧都频繁更新 RawImage 的图像资源,以提高性能。
  2. 资源管理:确保正确加载和释放图像资源,以避免内存泄漏。在不再需要显示特定图像时,及时将其从 RawImage 的 texture 属性中移除,并释放相关的资源。
  3. 兼容性:不同的图像格式和纹理类型可能在不同的平台上有不同的表现。在开发过程中,要在多个平台上进行测试,确保 RawImage 能够正确显示各种图像资源。
  4. 图像加载时间:如果图像资源较大或需要从网络加载,可能会导致加载时间较长。可以考虑使用异步加载或预加载技术,以减少用户等待时间。

六. 和 image的区别

功能特性

  1. RawImage

    • 主要用于显示原始的纹理(Texture)数据,可以直接接受 Texture2D、RenderTexture 等类型的图像资源。
    • 不支持 Sprite(精灵图)作为图像资源。
    • 通常用于显示动态生成的图像、视频帧或从外部获取的纹理数据。
    • 没有自动适应图像大小和比例的功能,需要手动调整 Rect Transform(矩形变换)来控制图像的显示尺寸。
  2. Image

    • 专门设计用于显示 Sprite(精灵图)资源,同时也可以接受 Texture2D 类型的图像资源。
    • 具有自动适应图像大小和比例的功能,可以根据图像的原始尺寸和 Rect Transform 的设置来自动调整显示效果。
    • 支持九宫格切片(Sliced)、平铺(Tiled)、填充(Filled)等特殊的显示模式,适用于制作按钮、边框等 UI 元素。
    • 通常用于显示游戏中的静态图标、界面元素等。

属性和设置

  1. RawImage

    • 主要属性包括 texture(用于设置显示的纹理)、color(调整图像颜色)等。
    • 没有 Image 中的 sprite 属性和相关的 Sprite 设置选项。
  2. Image

    • 具有 sprite 属性用于设置显示的 Sprite 资源,同时还有 colormaterial(材质)等属性。
    • 可以通过设置 Image Type(图像类型)来选择不同的显示模式,如 Simple(简单)、Sliced(切片)、Tiled(平铺)、Filled(填充)等。

使用场景

  1. RawImage

    • 当需要显示实时生成的图像数据(如从相机获取的视频帧)或动态加载的纹理资源时,RawImage 是一个合适的选择。
    • 用于显示非传统的图像格式或需要直接操作纹理数据的情况。
    • 例如,在制作视频播放器界面时,可以使用 RawImage 来显示视频帧。
  2. Image

    • 适用于显示游戏中的静态 UI 元素,如图标、按钮背景等。
    • 当需要利用 Sprite 的特殊显示模式来制作可拉伸、可重复的 UI 元素时,Image 更加方便。
    • 例如,制作游戏菜单界面时,使用 Image 来显示各种图标和按钮。

性能影响

  1. RawImage

    • 由于没有自动适应图像大小和比例的功能,可能需要更多的手动调整和计算,在某些情况下可能会增加开发的复杂性。
    • 显示大尺寸的纹理数据可能会对性能产生较大影响,需要注意内存和 GPU 资源的使用。
  2. Image

    • 自动适应功能可以简化开发过程,但在某些情况下可能会导致不必要的图像缩放,影响图像质量。
    • 对于复杂的 Sprite 显示模式,可能会有一定的性能开销,特别是在处理大量 UI 元素时。

所以在制作 UI 图片时,Image 通常是更合适的选择.