UGUI
UGUI中的Image和RawImage的区别
Image 组件
Image
组件是UGUI中最常用的用于显示图像的组件。它支持多种图像类型(如Sprite、Sprite Atlas、Texture2D等),并且提供了一些方便的属性来调整图像的显示方式,如**color
(颜色)、material
(材质)、sprite
**(精灵)等。
主要特点:
- 支持Sprite和Texture2D:可以直接使用Unity中的Sprite或Texture2D资源。
- 具有内置的颜色调整:可以通过**
color
**属性调整图像的颜色。 - 支持材质:可以通过**
material
**属性应用自定义的Shader效果。
1 | using UnityEngine; |
RawImage 组件
RawImage 组件则提供了更底层的图像显示功能。它主要用于显示Texture2D类型的图像,并且不提供像Image那样的高级特性(如颜色调整或Sprite支持)。但是,RawImage具有更高的灵活性,因为它允许你直接使用原始的Texture2D数据。
主要特点:
- 仅支持Texture2D:只能使用Texture2D资源。
- 无内置颜色调整:颜色调整需要在Shader级别进行(如果需要的话)。
- 更高的灵活性:可以直接操作Texture2D数据,实现更复杂的图像效果。
1 | using UnityEngine; |
Canvas的 Render Mode(渲染模式) 三种方式
渲染模式 | 中文名 | 作用 | 例子 |
---|---|---|---|
Screen Space - Overlay | 屏幕空间-覆盖层 | 此模式下,Canvas始终渲染在屏幕的最上层,不受任何相机(Camera)的影响。Canvas的坐标基于屏幕像素,左上角为(0,0),右下角为(Screen.width, Screen.height) | 显示一个始终位于屏幕中心的UI元素(如文本)。 |
Screen Space - Camera | 屏幕空间-相机 | 此模式下,Canvas会渲染到指定的相机上。Canvas的坐标仍然基于屏幕像素,但会受到相机的影响(如相机的裁剪平面、视场角等)。 | 在一个自定义相机视图中显示UI元素。 |
World Space | 世界空间 | 此模式下,Canvas被视为场景中的一个普通对象,具有三维坐标和旋转。Canvas会渲染到所有能看到它的相机上。 | 将一个UI面板放置在三维场景中的某个位置,并随着玩家移动。 |
Canvas怎么适配屏幕
UI缩放模式
Property | Function |
---|---|
UI Scale Mode | Canvas中UI元素的缩放模式 |
Constant Pixel Size | 使UI保持自己的尺寸,与屏幕尺寸无关。 |
Scale With Screen Size | 屏幕尺寸越大,UI越大。 |
Constant Physical Size | 使UI元素保持相同的物理大小,与屏幕尺寸无关。 |
Constant Pixel Size 和 Constant Physical Size 的区别 | 两者本质相同,但 Constant Pixel Size 通过逻辑像素大小调节来维持缩放,而 Constant Physical Size 通过物理大小调节来维持缩放。 |
如何在不同分辨率下保持UI的一致性
多屏分辨率下的UI布局一般考虑两个问题:
布局元素的位置,即屏幕分辨率变化的情况下,布局元素的位置可能固定不动,导致布局元素可能超出边界;
布局元素的尺寸,即在屏幕分辨率变化的情况下,布局元素的大小尺寸可能会固定不变,导致布局元素之间出现重叠等功能。
为了解决这两个问题,在Unity UGUI体系中有两个组件可以来解决问题,分别是布局元素的Rect Transform和Canvas的Canvas Scaler组件。
CanvasScaler中UI Scale Mode有三种模式,Constant Pixel Size、Scale With Screen Size、Constant Physical Size,其中第二个就是根据屏幕分辨率来进行缩放适配。在这个模式下,有两个参数,一个是我们在开发过程中的标准分辨率,一个是屏幕的匹配模式,通过这里面的设置,就可以完成多分辨率下的适配问题。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 零の領域!