UGUI学习笔记(二)可视组件

一、Text组件

  • Text:组件显示的文本内容。
  • Character
    • Font:文本字体
    • Font Style:文本样式,包含「Normal正常」、「Bold加粗」、「Italic倾斜」、「Bold And Italic加粗并倾斜」
    • Font Size:文本大小
    • Line Spacing:行间距
    • Rich Text:是否开启富文本
  • Paragraph
    • Alignment:文本的水平和垂直对齐方式。
    • Align by Geometry:几何对齐(根据字的几何形状)
    • Horizontal Overflow:当选择Overflow时允许水平方向超出文本框范围
    • Vertical Overflow:当选择Overflow时允许垂直方向超出文本框范围
    • Best Fit:自动调整字体大小以适应文本框
  • Color:文本颜色
  • Material:文本材质
  • Maskable:关闭后父物体的遮罩将不再对其生效

新版本Unity中已经将Text组件归为已过时,并推荐使用TMP的Text组件。可以参考这篇文章传送门

富文本

富文本类似于HTML标签的语法格式,可以灵活的调整文本样式。
Unity支持的样式标签如下:

<b></b> --粗体
<i></i> --斜体
<size=50></size> --字号
<color=red></color> --颜色
<material=2>texturally</material> --仅对Text Mesh有用,使用参数指定的材质渲染文本部分
<quad material=1 size=20 x=0.1 y=0.1 width=0.5 height=0.5> --仅对Text Mesh有用,渲染与文本内联的图像

二、Image组件

  • Source Image:表示要显示的图像的纹理(必须作为精灵导入)。
  • Color:要应用于图像的颜色。
  • Material:用于渲染图像的材质。
  • Image Type:显示类型,下面将详细讲解。
  • Set Native Size:将图像框的尺寸设置为纹理的原始像素大小。

Image Type

当「Image Type」选择「Simple」选项时,如果Sprite的大小与组件的大小不同时,前者将进行拉伸处理以符合组件大小。如果此时复选了「Perserve Aspect」选项,则图片在缩放时将保持长宽比例恒定。

此外,在此模式下选中「Use Sprite Mesh」选项,Image将使用Sprite Mesh渲染图像。

当「Image Type」选择「Sliced」选项时,图片将按九宫格进行切分。
比如我对一张滑稽进行如下切分

那么此时再调整Image的大小,九宫格的四个角将保持不变,四条边只进行拉伸操作,只有中间的部分会进行缩放操作。此外,当取消「Fill Center」选项时,中间部分将不再显示

当「Image Type」选择「Tiled」选项时,图片将会像铺地砖一样不断重复,直到填满整个图片控件。需要注意填充时内部会采用九宫格中间的切片进行填充

当「Image Type」选择「Filled」选项时,与「Simple」模式相似,不同之处在于它可以表现出一种从无到有的过程。效果如下

「Fill Method」设置了填充形式
「Fill Origin」设置了填充的起始位置
「Fill Amount」设置了填充百分比
通过脚本动态控制「Fill Amount」可以实现类似技能冷却的效果。

三、Raw Image组件

Raw Image组件向用户显示非交互式图像。此图像可用于装饰或图标之类的用途,还可以从脚本更改图像以便反映其他组件的更改。该组件类似于Image组件,但为动画化图像和准确填充组件矩形提供了更多选项。Image图像组件要求其纹理为Sprite,而Raw Image可以接受任何纹理。

UV Rect

UV Rect属性可以调整图像在控件矩形内的偏移和大小,以标准化坐标(范围 0.0 到 1.0)表示。图像边缘将进行拉伸来填充 UV 矩形周围的空间。效果如下

以上面的火柴人图片举例,UV Rect会将图片坐标映射到(0,1)的范围内。即使X或Y超过1,也会重新映射到(0,1)中,类似于跑马灯的效果。

基于该特性,我们可以将多个帧组成的图片做成动画

代码如下

public class UVRectExample : MonoBehaviour
{
    private RawImage _rawImage;
    private float _offsetX;
    private float _offsetY;
    void Start()
    {
        _rawImage = GetComponent<RawImage>();
        _offsetX = 1 / 5f;
        _offsetY = 1 / 3f;
        StartCoroutine(Play());
    }

    IEnumerator Play()
    {
        float x = 0;
        float y = 0;
        while (true)
        {
            y += _offsetY;
            while (x < 1)
            {
                x += _offsetX;
                _rawImage.uvRect = new Rect(x, y, _rawImage.uvRect.width, _rawImage.uvRect.height);
                yield return new WaitForSeconds(0.1f);
            }
            x = 0;
        }
    }
}

在UI上展示3D物体

当Canvas的渲染模式处于Overlay下时,是无法在UI中显示3D物体的。但是通过Render Texture + Raw Image可以间接实现这种效果

Render Texture涉及到了渲染方面的知识,简单理解就是相机将拍摄到的物体渲染到Render Texture上,然后再由Raw Image展示出来。具体做法如下:
(1)在场景中新建一个相机,相机的Clear Flag设置为Solid Color。将3D物体放置在相机的视锥体范围内

(2)创建一个Render Texture,并将其设置为相机的Target Texture

(3)将Raw Image的Texture设置为这个Render Texture

大功告成!调节Raw Image的大小可以调整显示的3D物体在屏幕中的大小

四、Mask组件

Mask遮罩不是可见的 UI 控件,而是一种修改控件子元素外观的方法。遮罩将子元素限制(即“掩盖”)为父元素的形状。因此,如果子项比父项大,则子项仅包含在父项以内的部分才可见。

  • Show Graphic:对于子项以外的区域是否显示父元素的内容

RectMask2D

关于Mask组件和RectMask2D组件的不同点,可以参考这篇文章传送门

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值