【Unity基础】初识UI Toolkit - 运行时UI
Unity中的UI工具包(UI Toolkit)不但可以用于创建编辑器UI,同样可以来创建运行时UI。
关于Unity中的UI系统以及使用UI工具包创建编辑器UI可以参见:
1. Unity中的UI系统
2. 初识UI Toolkit - 编辑器UI
本文将通过一个简单示例来介绍如何使用UI工具包来创建运行时UI。
一、创建UI Document(.uxml)
1. 使用任意模板新建一个Unity项目。
2. 在Project中,右键点击Scene,选择Create > UI Toolkit > UI Document,命名为SimpleRuntimeUI。

3. 在Project里,点击SimpleRuntimeUI右侧箭头展开后,双击inlineStyle,在文本编辑器里打开。并将文件内容替换为下面代码。
| <ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" xsi="http://www.w3.org/2001/XMLSchema-instance" engine="UnityEngine.UIElements" editor="UnityEditor.UIElements" noNamespaceSchemaLocation="../UIElementsSchema/UIElements.xsd" editor-extension-mode="False"> <ui:VisualElement style="flex-grow: 1;"> <ui:Label text="This is a Label" display-tooltip-when-elided="true"/> <ui:Button text="This is a Button" display-tooltip-when-elided="true" name="button"/> <ui:Toggle label="Display the counter?" name="toggle"/> <ui:TextField picking-mode="Ignore" label="Text Field" text="filler text" name="input-message" /> </ui:VisualElement> </ui:UXML> |
二、将UI Document与场景关联
1. 在场景中,选择菜单GameObject > UI Toolkit > UI Document,新建一个对象。在Hierarchy中选择UIDocument,将Project中的SimpleRuntimeUI.uxml拖到Inspector中的Source Asset中。

三、创建MonoBehaviour脚本
1. 选择菜单Assets > Create > Scripting > Monobehaviour Script,创建脚本并命名为SimpleRuntimeUI.cs。
2. 双击SimpleRuntimeUI.cs,打开后将内容替换为下面代码。
| using UnityEngine; using UnityEngine.UIElements; public class SimpleRuntimeUI : MonoBehaviour { private Button _button; private Toggle _toggle; private int _clickCount; //Add logic that interacts with the UI controls in the `OnEnable` methods private void OnEnable() { // The UXML is already instantiated by the UIDocument component var uiDocument = GetComponent<UIDocument>(); _button = uiDocument.rootVisualElement.Q("button") as Button; _toggle = uiDocument.rootVisualElement.Q("toggle") as Toggle; _button.RegisterCallback<ClickEvent>(PrintClickMessage); var _inputFields = uiDocument.rootVisualElement.Q("input-message"); _inputFields.RegisterCallback<ChangeEvent<string>>(InputMessage); } private void OnDisable() { _button.UnregisterCallback<ClickEvent>(PrintClickMessage); } private void PrintClickMessage(ClickEvent evt) { ++_clickCount; Debug.Log($"{"button"} was clicked!" + (_toggle.value ? " Count: " + _clickCount : "")); } public static void InputMessage(ChangeEvent<string> evt) { Debug.Log($"{evt.newValue} -> {evt.target}"); } } |
3. 保存文件并返回Unity。在Hierarchy中选择UIDocument,将Project中的SimpleRuntimeUI拖到Inspector的空白处,给UIDocument添加脚本组件。
4. 点击“运行”,在Game窗口中就可以看到如下UI。点击Button,可以在控制台看到输出的消息。

相关文章:
【Unity基础】初识UI Toolkit - 运行时UI
Unity中的UI工具包(UI Toolkit)不但可以用于创建编辑器UI,同样可以来创建运行时UI。 关于Unity中的UI系统以及使用UI工具包创建编辑器UI可以参见: 1. Unity中的UI系统 2. 初识UI Toolkit - 编辑器UI 本文将通过一个简单示例来…...
20.体育馆使用预约系统(基于springboot和vue的Java项目)
目录 1.系统的受众说明 2.开发环境与技术 2.1 Java语言 2.2 MYSQL数据库 2.3 IDEA开发工具 2.4 Spring Boot框架 3.需求分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 经济可行性 3.1.3 操作可行性 3.2 系统流程分析 3.3 系统性能需求 3.4 系统功能需求 4.系…...
unity3d————三角函数练习题
先上代码: public class SinCos : MonoBehaviour {public float moveSpeed 10f; //前进的速度public float changValue 5f; //左右的速度public float changeSize 5f; //左右的幅度float time 0;void Update(){this.transform.Translate(Vector3.forwa…...
如何在Linux系统中使用Git进行版本控制
如何在Linux系统中使用Git进行版本控制 Git简介 安装Git 在Debian/Ubuntu系统中安装 在CentOS/RHEL系统中安装 初始化Git仓库 配置全局用户信息 基本的Git命令 添加文件到暂存区 查看状态 提交更改 查看提交历史 工作流 分支管理 切换分支 合并分支 远程仓库 添加远程仓库 推…...
Ubuntu编译linux内核指南(适用阿里云、腾讯云等远程服务器;包括添加Android支持)
在 Ubuntu 上编译内核的步骤如下: 1、安装必要的依赖包: 这里和你chatgpt的略有不同 sudo apt-get update sudo apt-get install build-essential libncurses-dev bison flex libssl-dev libelf-dev dwarves 后续如果遇到“FAILED: load BTF from vmlinux: Invalid argum…...
[MySQL]DQL语句(一)
查询语句是数据库操作中最为重要的一系列语法。查询关键字有 select、where、group、having、order by、imit。其中imit是MySQL的方言,只在MySQL适用。 数据库查询又分单表查询和多表查询,这里讲一下单表查询。 基础查询 # 查询指定列 SELECT * FROM …...
GPT原理;ChatGPT 等类似的问答系统工作流程如下;当用户向 ChatGPT 输入一个问题后:举例说明;ChatGPT不是通过索引搜索的传统知识库
目录 GPT原理 GPT架构 GPT 主要基于 Transformer 的解码器部分 ChatGPT 等类似的问答系统工作流程如下: 用户输入 文本预处理 模型处理 答案生成 输出回答 当用户向 ChatGPT 输入一个问题后:举例说明 文本预处理: ChatGPT不是通过索引搜索的传统知识库 GPT GPT…...
目前最新最好用 NET 混淆工具 .NET Reactor V6.9.8
目前最新最好用 NET 混淆工具 .NET Reactor V6.9.8 1、.NET Reactor V6.9.8 功能简介2、官方下载 1、.NET Reactor V6.9.8 功能简介 业界领先的源代码保护 .NET Reactor通过多种方法来防止反编译,这些方法会将 .NET 程序集转换为任何现有工具都无法反编译的进程。…...
计算布尔二叉树的值
给你一棵 完整二叉树 的根节点,这棵树有以下特征: 叶子节点 要么值为 0 要么值为 1 ,其中 0 表示 False ,1 表示 True 。非叶子节点 要么值为 2 要么值为 3 ,其中 2 表示逻辑或 OR ,3 表示逻辑与 AND 。 …...
Java-I/O框架09:InputStreamReader、OutputStreamWriter使用
视频链接:16.24 转换流的使用_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Tz4y1X7H7?spm_id_from333.788.videopod.episodes&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5&p24 1.InputStreamReader使用 package com.yundait.Demo05;import java…...
二十九、Python基础语法(继承-上)
一、概念介绍 继承:继承描述的是类与类之间的关系,集成之后子类对象可以直接使用父类中定义的方法的属性,可以减少代码冗余,提高编码效率。 二、继承语法 三、继承例子 # 定义一个父类 Animal class Animal:def __init__(self,…...
JVM 复习1
内容 JVM 类加载器 JVM 运行时数据区 测试1 JVM整体架构考察。整体架构分为哪三层。分别是什么?通过绘制架构图来作答。 前端编译器是什么,作用是什么。要进行那些步骤? 类加载构成几个步骤。并且详细作答每个步骤的工作。 准备阶段和初…...
安装fpm,解决*.deb=> *.rpm
要从生成 .deb 包转换为 .rpm 包,可以按照以下步骤修改打包脚本 1. 使用 fpm 工具 fpm 是一个强大的跨平台打包工具,可以将 .deb 包重新打包成 .rpm,也可以直接从源文件打包成 .rpm。 安装 fpm sudo apt-get install ruby-dev sudo gem in…...
基于MATLAB典型去雾算法代码
1.3.1 Rentinex理论 Retinex(视网膜“Retina”和大脑皮层“Cortex”的缩写)理论是一种建立在科学实验和科学分析基础上的基于人类视觉系统(Human Visual System)的图像增强理论。该算法的基本原理模型最早是由Edwin Land…...
FrankenPHP实践
目录 1. 说明 2. 程序修改 3. 性能测试 4. 配置 4.1 Docker化部署 4.2 泛域名和证书设置 4.3 相关命令 5. 要点: 6. 参考 1. 说明 Frankenphp是一个先进的,结合了高性能Caddy服务器的PHP环境框架,它允许用户只需要少量改动ÿ…...
嵌入式硬件电子电路设计(一)开关电源Buck电路
目录 Buck电路基本结构 1. 开关闭合(SW 闭合) 2. 开关断开(SW 断开) 3. 开关控制和占空比 MP1584电路分析 其他Buck芯片的电路参考 Buck电路基本结构 下图是简化之后的BUCK电路主回路。下面分析输出电压的产生K闭合后&…...
java项目之协力服装厂服装生产管理系统的设计与实现(springboot)
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的协力服装厂服装生产管理系统的设计与实现。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: …...
Java虚拟机的历程(jvm01)
Java虚拟机的历程(jvm01) Java虚拟机(JVM)作为Java语言的核心技术之一,自诞生以来经历了多次迭代与演变。不同的虚拟机在性能、功能以及适用场景上各有侧重。本文将介绍Java虚拟机发展历程中的一些重要虚拟机…...
[代码随想录Day4打卡] 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II 总结
24. 两两交换链表中的节点 题目: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 重点: 明确具体交换怎么做。交换其中1,2…...
java项目之校园周边美食探索及分享平台(springboot)
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的校园周边美食探索及分享平台。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 校园周边美食…...
Redis分布式锁进阶第二十二篇拆解
一、本篇前置衔接 第九十二篇我们完成Redisson源码拆解、手写复刻、底层内核穿透,彻底明白分布式锁代码层、脚本层、线程层原理。到此为止,代码、源码、坑点、运维、监控、面试全部讲透。但很多开发最大的困惑依旧存在:不同体量公司为什么锁架…...
从“客户匿名”到“可验证”:技术服务案例的工程化写法
在撰写技术服务案例时,我们经常面临一个挑战:客户要求匿名,但案例又需要让潜在客户相信效果。如何平衡?结合文澜天下科技在AI搜索优化项目中的实践,分享一种“可验证”的案例写法。一、定位具体行业和场景 不写“某教育…...
从技巧到工程:构建可维护的Prompt设计体系与实战指南
1. 项目概述:Prompt Engineering 的实战价值最近在 GitHub 上看到一个名为 “imJunaidAfzal/Prompt-Engineering” 的项目,这让我想起了过去一年里,和团队一起从零开始摸索大语言模型应用落地的经历。Prompt Engineering,中文常译…...
CANoe VN1640A的隐藏技能:CH5 I/O口实战应用,从采集电压到模拟传感器信号
CANoe VN1640A的CH5 I/O接口深度实战:从电压采集到传感器信号模拟 1. 揭开CH5接口的神秘面纱 在汽车电子测试领域,Vector的VN1640A接口模块以其稳定性和多功能性著称。大多数工程师熟悉其CAN/LIN通道的使用,却常常忽略了一个隐藏的宝藏——…...
CloudCompare点云标注避坑实录:从‘No point in selection’到标签合并的正确姿势
CloudCompare点云标注实战避坑指南:从报错解析到高效标签管理 第一次打开CloudCompare准备标注点云时,我像大多数初学者一样,被那个简洁的界面迷惑了——看似简单的工具按钮背后,藏着不少让新手抓狂的"坑"。记得最初遇到…...
MOXA NPort 5110串口服务器避坑指南:网线直连、波特率设置与Web管理那些事儿
MOXA NPort 5110串口服务器实战避坑手册:从硬件部署到批量管理的深度解析 第一次接触工业级串口服务器时,我对着那个巴掌大的金属盒子发呆了十分钟——RJ45、DB9、电源接口密密麻麻挤在一起,配套光盘里还有三个不同功能的配置工具。直到现场调…...
高危场所专用防爆门 符合建筑消防标准
在化工车间、危险品仓库、油气厂区、锅炉房、粉尘车间等高危作业场所,爆炸、明火、冲击波隐患时刻存在,普通门窗无法起到安全防护作用,高危场所专用防爆门成为场地安防必备设施。 这款专业防爆门严格遵循国家建筑消防规范生产制造࿰…...
终极指南:erd实体关系图生成器的社区生态与开源贡献全解析
终极指南:erd实体关系图生成器的社区生态与开源贡献全解析 【免费下载链接】erd Translates a plain text description of a relational database schema to a graphical entity-relationship diagram. 项目地址: https://gitcode.com/gh_mirrors/er/erd 你是…...
Veil-Evasion项目演进与替代方案:从Veil-Evasion到Veil 3.0的迁移指南
Veil-Evasion项目演进与替代方案:从Veil-Evasion到Veil 3.0的迁移指南 【免费下载链接】Veil-Evasion Veil Evasion is no longer supported, use Veil 3.0! 项目地址: https://gitcode.com/gh_mirrors/ve/Veil-Evasion 🚨 重要通知:V…...
facebook-wda异常处理终极指南:如何优雅应对WDAError和元素不存在问题
facebook-wda异常处理终极指南:如何优雅应对WDAError和元素不存在问题 【免费下载链接】facebook-wda Facebook WebDriverAgent Python Client Library (not official) 项目地址: https://gitcode.com/gh_mirrors/fa/facebook-wda 在iOS自动化测试中…...
