【Unity】UI ToolKit 学习记录

news2024/10/2 8:43:55

        Unity推出的这个 UI ToolKit,据说是要用来替代UGUI。既然这么有野心,那肯定要搞来看一看。这次使用目标就是用这个 UI ToolKit 生成一堆类似HUD的头标,然后看看使用难易程度和性能如何。

        本文对应Unity版本 :2020.3.41f1c1

1、安装

        先要安装 UI Builder、UI Toolkit 、 Unity UI,这3个东西。至于安装方法可以自行网上搜索,这一部分教程还是比较多的,一般只要在Unity Package Manager 里面操作一下就可以了。

        安装好了效果如下:

         主要是那个 UI ToolKit,一定要安上(有概率是会没有安装上去的)。

2、创建UI面板

        UI Tool Kit 并不需要一个专门的 UI Camera 就能显示出来,具体方法如下:

  1. 随便创建一个GameObject,添加类:UIDocument

  2. 在资产中 Create > UI Toolkit > Panel Setting Asset 创建一个PanelSetting 配置,里面的参数随便调调,例如:

  3. Create > UI Toolkit > UI Document ,创建一个模板(我的机子上会卡好一会儿,应该是Unity的Bug,创建这个不必要这么长的时间)。

  4. 双击刚才创建的单位,会自动打开 UI Builder 的面板,然后进行编辑:

  5. 之后保存,并把这个资源以及刚才那个 PanelSetting 放到场景中的UI Document上面即可:

可见不需要相机就能显示出UI 

3、代码控制

        然后我们需要批量生成大量的标签,需要代码控制。

        首先是需要获取到对应的节点,也就是下图中的这个 UnitTitle_Ship,我们需要将其作为模板来生成。

        这一部分还是比较简单的,代码如下:

var document = GetComponent<UIDocument>();
var RootElement= document.rootVisualElement;
var Prefab= mRootElement.Q<VisualElement>("UnitTitle_Ship");

        完全可以理解为这个 VisualElement 就是平时用的 GameObject,就是语法上还是有区别的这种。之后我们就要复制一个这个节点:

var visualElement = Prefab.visualTreeAssetSource.CloneTree();
RootElement.Add(visualElement);
visualElement.transform.position = new Vector3(50, 150, 0);//随便填个位置

        然后我们需要修改新的节点的位置、颜色啊等参数,使之铺满屏幕,这一部分也比较好做。比如修改节点下一个文本:

var NameLabel = visualElement.Q<Label>("NameLabel");
NameLabel.text = "New Text"; //修改文本
NameLabel.style.color = new color(1,0,0,1);//修改颜色

        然后直接生成100个,铺满整个屏幕看看。

4、性能测试

        首先就简单地看先看看DrawCall:

 图文混排只有2个DC,合批效果是很好的

        明显合批效果是很好的,2个DC,这种图文混排2个DC在UGUI里要做到是十分困难的,而且也不会这么方便。但是这种只是静态效果,一般来讲UI是会一直变动的,尤其是这种HUD的情况,因此测试一下动态效果。

        我这里代码写得比较简单,就是每个UI都每帧修改一下位置,在屏幕内活动一下触发重新绘制:

         这一下就炸了,显然UIElement的重绘开销很大,达到了33ms,这个开销是十分恐怖的。而且他这个重绘开销是在主线程(而UGUI很多重绘的工作是分到其他线程操作了,且开销比这个小),显然性能是不可接受的。

        如果是这种水平的话显然是不能真正商用的,性能不可接受。UI ToolKit 仅仅把 DrawCall 降下来,但是综合开销反而更大了,得不偿失。

5、总结

        与 UGUI 比起来,这个 UI Tool Kit 确实是真的要难用很多,很多地方还是会有些莫名,可能是开发版的原因吧。他两个优势,一个是可以在编辑器下使用,一个是合批效果很好。

        我觉得可以用来做一些静态的界面,还是不错的,应该是比UGUI的效率要高的。但是对于动态界面,恐怕重绘开销难以接受了。不知道这个是不是有方案可以优化下来,或者后面新版本解决了这个问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/95471.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

四十六——五十一

四十六、JavaScript——对象 一、对象 数据类型&#xff1a;原始值&#xff1a; 1. 数值 Number 2. 大整数 BigInt 3. 字符串 String 4. 布尔值 Boolean 5. 空值 Null 6. 未定义 Undefinded 7. 符号 Symbol 除了七种原始值之外&#xff0c;后面所用到的数据类型&#xff0c;都…

吐槽嫌弃测试周期太长?开发自测一下

互联网产品竞争激烈&#xff0c;在生存的巨大压力之下&#xff0c;策划和运营人员们恨不得每一个需求都能秒级上线&#xff0c;这就给研发团队带来了巨大的压力。 有时候&#xff0c;产品的老大很关注某一个功能点&#xff0c;希望能尽快上线&#xff0c;可是&#xff0c;他发…

基于nodejs电影售票后台管理的设计和实现.zip(论文+源码+ppt文档+视频录制)

相关资料下载地址&#xff1a;请点击下载》》》 一、 项目介绍 5 二、 需求分析 6 1、 前端需求 6 2、 后端需求 6 3、 开发环境 7 三、 技术介绍 7 1、 Vue 7 2、 ElementUI 7 3、 NodeJS 7 4、 MySQL 8 四、 功能实现 8 1、 前端服务构建 8 2、 前端API接口封装 8 3、 前端路…

技术分享 | 掌握高频 Docker 命令,夯实内功基础

本文为霍格沃兹测试学院学院学员 Docker 实战课程学习笔记&#xff0c;供各位同学参考。 在 Dokcer 横空出世之前&#xff0c;应用打包一直是大部分研发团队的痛点。在工作中&#xff0c;面对多种服务&#xff0c;多个服务器&#xff0c;以及多种环境&#xff0c;如果还继续用传…

我的头条四面:测试工程师调岗测试开发工程师,发生了什么?

早就听说头条是算法大厂手撕代码恐怖如斯&#xff0c;进入玻璃房之前做好了心理准备&#xff0c;本次头条面试总共是四面&#xff0c;一二三技术面HR面&#xff0c;总体感觉也还不错&#xff0c;面试的是测试工程师&#xff0c;最后拿到的offer却是测试开发工程师&#xff0c;从…

Mysql主从同步时Slave_SQL_Running状态为Yes , 但是Slave_IO_Running状态为Connecting以及NO的情况故障排除

1. 环境说明 主机IP : 192.168.154.146 从机1IP : 192.168.154.147 从机2IP : 192.168.154.148 2.故障记录 当使用Navicat工具打开这三个数据库时 , 发现主库和从库的数据不同 3.排查过程-(Slave_IO_Running状态为Connecting) 3.1 网络是否互通 互ping三台机器 , 看机器…

Python自由职业可以做什么?副业月入3000的快乐你根本想象不到

很多有时间的程序员都会在业余时间接一些“私活”&#xff0c;也就是我们说的副业&#xff01; 毕竟虽然程序员加班时间长&#xff0c;但是也不是所有程序员都是需要997的…许多事业编制或者说一部分公司并不会出现特别夸张的加班时长。平常周末的时候也就会接一些副业&#x…

如何用Python操作PDF制作数据报告?

大家好&#xff0c;你是否会发现 Python 操作PDF文档内容&#xff0c;主要围绕PDF文档的内容提取、合并与拆分、加密与解密、添加水印以及不同文档格式相互转换来展开。 但大家会发现&#xff0c;其中并没有有太多直接操作PDF并向其写入的内容。这是因为我们更推荐大家Python自…

C语言练习之计算一个数的每位之和(递归实现)

目录 前言 一、思路 二、源代码以及运行截图 源代码&#xff1a; 运行截图&#xff1a; 总结 前言 写一个递归函数DigitSum(n)&#xff0c;输入一个非负整数&#xff0c;返回组成它的数字之和 例如&#xff0c;调用DigitSum(1729)&#xff0c;则应该返回1 7 2 9&#…

LeetCode HOT 100 —— 297.二叉树的序列化与反序列化

题目 序列化是将一个数据结构或者对象转换为连续的比特位的操作&#xff0c;进而可以将转换后的数据存储在一个文件或者内存中&#xff0c;同时也可以通过网络传输到另一个计算机环境&#xff0c;采取相反方式重构得到原数据。 请设计一个算法来实现二叉树的序列化与反序列化。…

你还以为格子衫头发的就是程序员?这些特征都没有别说你是程序员

周一写几百个bug&#xff0c;周二到周四拼命改bug&#xff0c;周五总结bug&#xff0c;总结的好有周末&#xff0c;总结的不好周末无休&#xff01; 咳咳&#xff0c;这样的周末我可以不休息&#xff01; 有很多想要学习Python却找不到途径的朋友&#xff0c;我这里整理了一…

.NET Framework杂记

这篇博客主要记录在用C#编写上位机时&#xff0c;不会的知识点&#xff0c;随时更新&#xff0c;方便查阅。 C#语法操作杂记c#中让textbox选中不选中C#无法使用实例引用来访问成员解决方法针对不同定义情况的引用解释C# 字符串分割用字符串分割用多个字符串分割用单字符分割C#中…

【DevOps实战系列】第二章:详解Gitlab环境及搭建

个人亲自录制全套DevOps系列实战教程 &#xff1a;手把手教你玩转DevOps全栈技术 gitlab就不多说了&#xff0c;这个东西现在大多数公司内部都在使用&#xff0c;它分为社区和企业版本&#xff0c;社区版本ce是免费的&#xff0c;当然也可以选择gitee或github&#xff0c;但由于…

非零基础自学Golang 第8章 包管理 8.6 包的命名 8.7 依赖包管理

非零基础自学Golang 文章目录非零基础自学Golang第8章 包管理8.6 包的命名8.7 依赖包管理第8章 包管理 8.6 包的命名 每个包都有一个包名&#xff0c;包名一般是短小的名字&#xff0c;在包的声明处指定。 通常来说&#xff0c;默认的包名就是包导入路径名的最后一段&#x…

AD20和立创EDA设计(5)立创EDA导出3D模型放入AD20使用

&#xff08;1&#xff09;本文主要介绍如何将从立创EDA导出的3D模型&#xff0c;并且对3D模型进行处理。 &#xff08;2&#xff09;需提前观看&#xff1a;AD20和立创EDA设计&#xff08;4&#xff09;PCB设计&#xff1b; &#xff08;3&#xff09;本文需要使用到Fusion 36…

基于6自由度飞行器的EKF和INS融合算法的MATLAB仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 六自由度四轴飞行器,包括由四根杆组成的正四面体,所述正四面体的中心位置设有一个空心圆球,空心圆球上设有四根支杆分别与正四面体的四个顶点相连,所述空心圆球内设有电池和控制系统, INS/GPS的松…

nodejs+vue041家政管理系统

基本要求&#xff1a;要求此系统能较完善的实现服务人员及客户信息的管理等功能。 主界面&#xff1a;分为用户登陆和管理员登陆&#xff0c;用户登陆包含客户登录和服务人员登陆。 用户注册&#xff1a;注册时可选择身份&#xff08;客户或者服务人员&#xff09;。 后台管…

目前免费用可用的天气api接口及失效接口

网上关于免费天气api接口很多&#xff0c;本人总结了一下目前还可用的免费api接口和已失效的接口如下&#xff1a; 目前可用接口&#xff1a; 1、讯飞语音识别内置的墨迹天气API。链接&#xff1a; http://autodev.openspeech.cn/csp/api/v2.1/weather?openIdaiuicus&c…

【Javaweb-前端】CSS

1. Syntax Selector − A selector is an HTML tag at which a style will be applied. This could be any tag like or etc.Property − A property is a type of attribute of HTML tag. Put simply, all the HTML attributes are converted into CSS properties. They coul…

散热材料产业SWOT分析:5G建设带动市场需求 多元化散热方案将成行业主流

传统散热材料以石墨片和导热凝胶等TIM材料&#xff08;导热界面材料&#xff09;为主&#xff0c;石墨片存在导热系数相对较低、厚度相对较大等问题。目前热管和VC&#xff08;均热板&#xff09;开始从电脑、服务器等领域渗透到智能手机终端&#xff0c;石墨烯材料也开始应用。…