首页 > 其他分享 >Unity UI 系统:Unity UI package (uGUI) 使用说明

Unity UI 系统:Unity UI package (uGUI) 使用说明

时间:2024-09-11 22:21:22浏览次数:3  
标签:package Image value 画布 Unity UI 投射 矩形

卡牌游戏 UI 系统

Unity UI 基础概念

布局(Layout)

Unity 的屏幕坐标定义为左下角为 (0, 0),右上角为 (1, 1) 。

锚点(Anchor)

  • 锚点控制 子矩形UI的边 相对 父矩形对应坐标轴的指定比例边 的 距离 保持不变。
    • Anchor Min X 的 值 value 表示:该矩形UI左边的X坐标 相对 父矩形UI的比例值为value处对应的X轴坐标 的距离保持不变。
    • Anchor Min Y 的 值 value 表示:该矩形UI底边的Y坐标 相对 父矩形UI的比例值为value处对应的Y轴坐标 的距离保持不变。
    • Anchor Max X 的 值 value 表示:该矩形UI右边的X坐标 相对 父矩形UI的比例值为value处对应的X轴坐标 的距离保持不变。
    • Anchor Max Y 的 值 value 表示:该矩形UI顶边的Y坐标 相对 父矩形UI的比例值为value处对应的Y轴坐标 的距离保持不变。
  • 所以锚点不能通过控制父控件的大小来直接控制子控件的缩放,只能通过控制子控件边与父控件边的距离来间接控制。

随屏幕大小缩放

  • 通过 GameObject 菜单创建新的画布时,默认情况下也会添加画布缩放器组件
  • 在画布缩放器组件中,可将其 UI Scale Mode 设置为 Scale With Screen Size。使用此缩放模式,可以指定要用作参考的分辨率。如果当前屏幕分辨率小于或大于此参考分辨率,则会相应设置画布的缩放因子,使所有 UI 元素都与屏幕分辨率一起放大或缩小。
  • 其他设置见官方说明

布局组

网格布局组

Event System

事件系统的主要作用如下:

  • 管理视为选中状态的 GameObject
  • 管理正在使用的输入模块(Input Module)
  • 管理射线投射(如果需要)
  • 根据需要更新所有输入模块

Input Module

输入模块包含定义事件系统行为方式的主要逻辑,可用于:

  • 处理输入
  • 管理事件状态
  • 将事件发送到场景中对象。

该卡牌游戏中采用的就是默认的 Standalone Input Module。该模块与控制器/鼠标/触摸输入具有相同的功能。响应输入时会发送按钮按压、拖拽以及类似事件。

在这里插入图片描述

处理输入事件

如 UI 可以通过实现 IPointerClickHandler 接口的方式来处理用户点击事件:

public class CardUI : MonoBehaviour, IPointerClickHandler
{
    public void OnPointerClick(PointerEventData eventData)
    {
        if (eventData.button == PointerEventData.InputButton.Left)
        {
            if (onClick != null)
                onClick.Invoke(this);
        }

        if (eventData.button == PointerEventData.InputButton.Right)
        {
            if (onClickRight != null)
                onClickRight.Invoke(this);
        }
    }
}

Raycaster

射线投射器用于确定指针在哪个对象上方。

当场景中存在并启用了射线投射器时,只要从输入模块发出查询,事件系统就会使用该射线投射器。

如果使用多个射线投射器,那么这些射线投射器都会进行针对性投射,并且结果将根据与元素的距离进行排序。

Graphic Raycaster

图形射线投射器用于对 Canvas 进行射线投射。射线投射器查看画布上的所有图形,并确定是否有任何图形被射中。

Canvas Group

画布组 (Canvas Group) 可集中控制整组 UI 元素的某些方面,而无需单独处理每个元素。画布组的属性会影响所在的 GameObject 以及所有子 Object 。

画布渲染器

画布渲染器 (Canvas Renderer) 组件用于渲染Canvas中包含的图形 UI 对象。
在这里插入图片描述

属性

画布渲染器在 Inspector 中没有公开属性

详细信息

菜单 (GameObject > Create UI) 中提供的标准 UI 对象都在需要的地方附加了 Canvas Renderer,但对于自定义 UI 对象,可能需要手动添加此组件。虽然 Inspector 中没有公开属性,但可通过脚本访问一些属性和函数;请参阅脚本参考中的 CanvasRenderer 页面以了解完整的详细信息。

Unity UI 类型

基础 UI 组件

文本(Text)

图像(Image)

原始图像(Raw Image)

图像组件采用精灵,但原始图像采用纹理(无边框等)。

遮罩 (Mask)

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

按钮(Button)

组成
  • Background(Image)
  • Text

滑动条(Slider)

组成
  • Background(Image)
  • Fill Area
    • Fill(image)

滚动条(Scrollbar)

  • 可以通过 Direction 设置滚动方向:
    在这里插入图片描述
组成
  • Background(Image)
    • Sliding Area(Tansform)
      • Handle(Image)

输入区域(InputField)

组成
  • Background(Image)
    • Placeholder(Text)
    • Text

开关(Toggle)

组成
  • Background(Image)
    • CheckMark(Image)
  • Label(Text)

矩形滚动框(Scroll Rect)

组成
  • Background(Image)
    • Viewport(Image + Mask)
      • Content
    • Scrollbar Horizontal(Scrollbar)
    • Scrollbar Vertical(Scrollbar)

下拉选单(Dropdown List)

组成
  • Image
    • Label(Text)
    • DropdownArrow(Image)
    • Template(Scroll Rect)

UI Animation

过渡选项

Color Tint

Sprite Swap

Animator

Animator Controller

  • 控制器会引用其中所用的动画剪辑(Animation Clip),使用状态机来管理各种动画状态和它们之间的过渡。
  • 仅在对人形角色进行动画化时,才需要引用 Avatar。对于其他动画类型,只需Animator Controller。

设置 Trigger

在这里插入图片描述

代码中触发方法:

timeout_animator?.SetTrigger("pulse");

Reference

  • https://docs.unity3d.com/2022.3/Documentation/Manual/com.unity.ugui.html
  • https://zhuanlan.zhihu.com/p/157273459
  • https://zhuanlan.zhihu.com/p/667966938
  • https://www.lfzxb.top/personal-ui-framework-consider/
  • https://developer.unity.cn/projects/63f6c166edbc2a7851283390

标签:package,Image,value,画布,Unity,UI,投射,矩形
From: https://blog.csdn.net/sinat_34012434/article/details/142071902

相关文章

  • Guitar Pro 8.2.1 Build 32中文解锁版+Soundbanks Win/Mac音色库 开心激活版
    GuitarPro8.2.1Build32开心版软件是一个受吉他手喜爱的吉他和弦、六线谱、BASS四线谱绘制、打印、查看、试听软件,它也是一款优秀的MIDI音序器,MIDI制作辅助工具,可以输出标准格式的MIDI。GP的过人之处就在于它可以直接用鼠标和键盘按标准的六线谱、四线谱进行乐谱输入......
  • MySQL原理之UUID主键分析,插入或更新语法分析
    目录1MySQL不能用UUID做主键1.1前言1.2mysql和程序实例1.2.1准备工作1.2.2开始测试1.2.3程序写入结果1.2.4效率测试结果1.3使用uuid和自增id的索引结构对比1.3.1自增id1.3.2uuid1.4自增id缺点1.5雪花算法2插入或更新2.1onduplicatekey2.1.1定义2.1.2values函数2......
  • c++ string 转换成 guid
      在C++中,将一个字符串转换为GUID(GloballyUniqueIdentifier)可以通过以下方法实现。GUID通常是128位(16字节)的标识符,以标准格式表示,例如:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx。在C++中,常用的库之一是WindowsAPI,它提供了处理GUID的相关功能。这里是一个示例代码,将字符串转换......
  • HTB-Oopsie(越权漏洞,suid提权,js接口查询插件)
    前言各位师傅大家好,我是qmx_07,今天给大家讲解Oopsie靶机渗透过程信息搜集服务器开放了22SSH端口和HTTP80端口FindSomething插件介绍:帮助寻找网站的js接口,辅助渗透通过js接口查找,发现目录/cdn-cgi/login登录接口通过游客模式登录越权登录访问uploads文件......
  • 双人3D坦克(unity+C#)
        //TankManager.csusingSystem;usingUnityEngine;[Serializable]publicclassTankManager{publicColorm_PlayerColor;publicTransformm_SpawnPoint;[HideInInspector]publicintm_PlayerNumber;......
  • 快速搭建最简单的前端项目vue+View UI Plus
    1引言‌‌Vue是一套用于构建Web前端界面的渐进式JavaScript框架。‌‌它以其易学易用、性能出色、灵活多变而深受开发者喜爱,并且与其他前端框架(如‌React和‌Angular)相比,在国内市场上受到了广泛的认可和使用。点击进入官方网站。ViewUIPlus是ViewDesign设计体系中......
  • 移动UI案例:交通旅行类整套案例
    1.地图导航:提供地图展示、路线规划、实时导航等功能,帮助用户找到目的地并提供最佳路线。2.公交线路查询:提供公交车站信息、线路查询、实时公交到站信息等功能,方便用户使用公共交通工具。  3.实时交通信息:提供道路实时交通拥堵情况、路况预测、交通事故提示等功......
  • 高颜值官网(2):12个小家电网站UI,这是火辣辣的美呀。
    小家电网站的设计应该注重简洁、清晰和易用。以下是一些设计建议:1.清晰的导航:网站应该有清晰的导航菜单,让用户能够轻松找到他们需要的产品或信息。2.产品展示:网站应该有清晰的产品展示页面,包括高质量的产品图片和详细的产品描述。3.简洁的布局:避免过多的视觉噪音,保持页面......
  • rk3568系统buildroot开发笔记
    编译异常infrom_bz2importBZ2Compressor,BZ2DecompressorModuleNotFoundError:Nomodulenamed‘_bz2’sudoapt-getinstalllibbz2-dev然后删掉rk356x_bsp_bak/rk356x_bsp/build-iot/buildroot_output/rockchip_rk3568_iot/build/host-python3-3.10.5重新编......
  • 安全测试工具(1)- Burp Suite Pro的安装教程
    啥是BurpSuite用于攻击web应用程序的集成平台程序员必备技能,不仅可以拿来做渗透测试、漏洞挖掘还能帮助程序员调试程序Bug它包含了许多Burp工具,这些不同的burp工具通过协同工作,有效的分享信息,支持以某种工具中的信息为基础供另一种工具使用的方式发起攻击。这些工具设计了许......