当前位置: 首页 > news >正文

UIToolkit(一)

1 前言
UI Toolkit 是一种基于 Web 技术的 GUI 框架,是为了解决 UGUI 效率问题而设计的新一代 UI 系统(UGUI 的介绍详见→UGUI概述)。与 UGUI 不同,UI Toolkit 没有采用 GameObject 的方式,而是参考了 Web 技术的 XML 和 CSS 方案。这意味着它只保存变化的数据,而不是整个界面状态,这使得它具有更高的效率。
UI Toolkit 的历史可以追溯到 Unity 2018 年发布的 UIElement,起初主要用于 Editor 编辑面板中的 UI 开发,自 Unity 2019 起,它开始支持运行时 UI,并更名为 UIToolkit,它以 Package 包(com.unity.ui)的形式存在,并在 Unity 2021.2 版本中,被官方内置在 Unity 中,与 UGUI 的地位相同。
UI Toolkit 的优点:
跨平台
高性能(一个 Draw Call 绘制所有 UI)
自定义样式应用到任何元素
复用性、灵活性更好
配套的 UI 编辑工具(UI Builder)
同使支持 Editor 和 Runtime
UI Toolkit 的缺点:
不依赖 GameObject,难以制作放置在 3D 世界中的可互动 UI
不支持 Shader,难以制作特效
不支持 Animator 组件,无法制作实时循环动画(但有 Transition 动画系统)
UI Toolkit 内置案例见:【Window→UI Toolkit→Samples】,UI Tooolkit 容器介绍见→UI Toolkit容器 ,UI Tooolkit 元素介绍见→UI Toolkit元素,UI Tooolkit 样式选择器介绍见→UI Toolkit样式选择器。
2 UI Toolkit简单使用
创建uxml 文件
一 Windows -> UI Toolkit -> UIBuilder
在这里插入图片描述
二 在 Assets 窗口右键,依次选择【Create→UI Toolkit→UI Document】,会生成一个 uxml 文件

  • StyleSheets:样式窗口,用于管理元素样式;

  • Hierarchy:元素层级窗口,用于管理元素;

  • Library:容器和元素库;

  • Inspector:监视器窗口,用于配置容器和元素属性
    滚动鼠标滑轮可以放大和缩小预览窗口大小;按鼠标中键拖拽,可以调整预览窗口的位置。点击 Viewport 窗口右上角的 Preview 按钮,可以查看运行态的 UI 界面。
    创建UI document 对象
    在 Hierarchy 窗口右键,依次选择【UI Toolkit→UI Document】,创建 UI Document 对象,如下。
    在这里插入图片描述
    Panel Settings:定义一些全局的配置,比如字体、样式等信息,在创建 UI Document 对象时,会自动创建 PanelSettings.asset 文件;
    Source Asset:待显示的页面资源
    Sort Order:排序顺序,当有多个 UIDocument 对象时,序号越小的越先显示(在底部),序号越大的越后显示(在顶部);
    编辑uxml
    在 Assets 窗口双击 TestUXMLTemplate.uxml 文件,会打开 UI Builder 窗口,或者在菜单栏依次选择【Window→UI Toolkit→UI Builder】,也可以打开 UI Builder 窗口。
    在这里插入图片描述

    选中 Hierarchy 窗口 中的 VisualElement,在 Inspector 窗口配置 Flex 和 Background,如下,按 Ctrl + S 键保存。
    在这里插入图片描述

回到 Game 窗口,显示效果如下。中间的立方体是事先添加的 Cube 对象,半透明的黄色是 UI Document 显示的效果。
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/bfc11062c5f14eb7b1fb5c52abdba869.png

3 使用IED 打开创建的uxml
可以在uxml文件里边动态修改UI 界面
例如 动态添加<engine:Button text=“Button” />
<engine:Toggle text=“Toggle” />
在这里插入图片描述

UIBuilder 中显示
在这里插入图片描述

相关文章:

  • 【redis】pipeline管道
  • 第八章:C++ 实践
  • 调试正常 ≠ 运行正常:Keil5中MicroLIB的“量子态BUG”破解实录
  • 【Java面试题汇总】Java面试100道最新合集!
  • 笔记六:单链表链表介绍与模拟实现
  • cocos creator使用mesh修改图片为圆形,减少使用mask,j减少drawcall,优化性能
  • Linux 进程信息查看
  • docker私有仓库配置
  • π0源码剖析——从π0模型架构的实现(如何基于PaLI-Gemma和扩散策略去噪生成动作),到基于C/S架构下的模型训练与部署
  • 深度学习数值精度详细对比:BF16、FP16、FP32
  • 【商城实战(18)】后台管理系统基础搭建:从0到1构建电商中枢
  • 大空间多人互动技术、大空间LBE、VR大空间什么意思?如何实现?
  • from psbody.mesh import MeshModuleNotFoundError: No module named ‘psbody‘
  • AI算法与应用 全栈开发 前端开发 后端开发 测试开发 运维开发
  • Ubuntu22.04修改root用户并安装cuda
  • 解锁「3D格式转换SDK」HOOPS Exchange高质量B-REP功能的三大应用场景
  • 基于单片机的智慧音乐播放系统研究
  • Java多线程与高并发专题——阻塞队列常用方法与区别
  • 推动人工智能从“通用”向“专用”转变:GAI认证如何助力个人职业生涯
  • 1688店铺所有商品数据接口详解
  • 复旦一校友捐赠1亿元,却不留名
  • 俄需要达成怎样的特别军事行动结果?普京:包含四个方面
  • 2025年上海科技节开幕,人形机器人首次登上科学红毯
  • 信俗与共:清代新疆回疆儒释道庙宇的中华政教
  • 外交部部长助理兼礼宾司司长洪磊接受美国新任驻华大使递交国书副本
  • A股三大股指低收:汽车股领涨,大金融走弱,两市成交近1.1万亿元