【Unity基础】Unity中的UI系统

Unity中有三种UI系统,分别是IMGUI,Unity UI(uGUI)UI工具包(UI Toolkit)

这三种分别适用于编辑器和运行时UI的设计,但在功能支持上有所侧重。

一、Unity中的UI类型

UI类型有两种:编辑时和运行时

对UI系统的选择取决于是为了Unity编辑器开发UI,还是为游戏或应用程序开发运行时UI。

UI类型

UI工具包

Unity UI

IMGUI

注意事项

运行时(游戏内)

支持

推荐

不推荐

出于性能原因,不推荐将IMGUI用于游戏内运行时的UI

编辑器

推荐

不支持

支持

Unity UI不能用于编辑时

在最新的Unity 6中,推荐使用UI工具包。但UI工具包中不是支持Unity UI和IMGUI中所有的功能,所以对于某些特殊场景或旧项目还是要选择Unity UI或IMGUI。

不同角色对于UI系统的掌握要求

角色

UI工具包

Unity UI

IMGUI

技能

开发

支持

支持

支持

程序员可以使用任何游戏开发工具或API

技术美术

部分支持

支持

不支持

熟悉Unity基于游戏对象的工具和工作流程的技术美术师可能会习惯使用游戏对象、组件和Scene视图。他们可能不习惯UI工具包类似于Web的方法或IMGUI的纯C#方法

UI设计师

支持

部分支持

不支持

熟悉UI创建工具的UI设计师可能会习惯UI工具包基于文档的方法。

二、运行UI

UI工具包是Unity UI的替代方案,适用于创建运行在多种屏幕分辨率上的UI。如果需要以下功能,可以考虑使用UI工具包:

如果有以下需求,则推荐使用Unity UI:

  • 需要大量用户界面内容
  • 为美术师和设计师提供熟悉的创作工作流
  • 提供无纹理的UI渲染能力
     
  • 在3D场景中定位和照明的UI
  • 使用自定义着色器和材质的特效
  • 从MonoBehaviour中便捷地引用

(一)适用场景

Unity 6

推荐

适用多种分辨率的菜单和和复杂UI项目的HUD

UI工具包

用于世界空间UI和VR应用

Unity UI

需要自定义着色器和材质的UI

Unity UI

(二)UI工具包和Unity UI具体功能对比

功能

UI Toolkit

Unity UI

所见即所得的创作

嵌套可重用组件

全局样式管理

布局和样式调试器

场景集成

富文本标签

是*

可缩放文本

是*

字体回退

是*

自适应布局

输入系统支持

序列化事件

视觉脚本支持

兼容渲染管线

屏幕空间(2D)渲染

世界空间(3D)渲染

自定义材质和着色器

精灵/精灵图集支持

动态纹理图集

无纹理元素

UI 抗锯齿

矩形裁剪

蒙版裁剪

嵌套蒙版

UI 过渡动画

与动画剪辑和时间线的集成

三、编辑器UI

如果要创建复杂的编辑顺工具,推荐使用UI工具包

  • 更好的可重用性和解耦性
  • 提供可视化工具以创作UI
  • 更好的可扩展性,便于代码维护和性能优化

IMGUI是UI工具包的替代方案,适用于以下情况:

  • 不受限制地访问编辑器的扩展能力
  • 轻量级API,快速在屏幕上渲染UI

(一)适用场景

Unity 6

推荐

复杂的编辑器工具

UI工具包

属性绘制器

UI工具包

与设计师协作

UI工具包

(二)UI工具包与IMGUI具体功能对比

功能

UI Toolkit

IMGUI

所见即所得的创作

嵌套可重用组件

全局样式管理

布局和样式调试器

富文本标签

可缩放文本

字体回退

自适应布局

默认检查器

检查器:编辑自定义对象类型

检查器:编辑自定义属性类型

检查器:混合值(多重编辑)支持

数组和列表视图控件

数据绑定:序列化属性

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

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

相关文章

eval长度限制绕过

我把他的叙述写成代码&#xff0c;大概如下&#xff1a; <?php $param $_REQUEST[param]; if(strlen($param)<17 && stripos($param,eval) false && stripos($param,assert) false) {eval($param); } ?> 那么这个代码怎么拿到webshell&#xf…

Linux - 进程间通信(管道)

文章目录 一、进程间通信的目的二、进程间通信的本质三、管道1、介绍2、匿名管道3、命名管道 一、进程间通信的目的 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程资源共享&#xff1a;多个进程之间共享同样的资源。通知事件&#xff1a;一个进程需要向另一个或…

【软考】反规范化技术

论反规范化技术 反规范化有这几种技术&#xff0c;增加冗余列&#xff0c;增加派生列&#xff0c;重组表和分割表。其中冗余列是指同一个字段在另外的表中存储一份&#xff0c;减少连表操作。增加派生列是基于另外一个列或者多个列&#xff0c;计算得到一个新的列&#xff0c;可…

SpringBoot day 1104

ok了家人们这周学习SpringBoot的使用&#xff0c;和深入了解&#xff0c;letgo 一.SpringBoot简介 1.1 设计初衷 目前我们开发的过程当中&#xff0c;一般采用一个单体应用的开发采用 SSM 等框架进行开发&#xff0c;并在 开发的过程当中使用了大量的 xml 等配置文件&#x…

Python | Leetcode Python题解之第528题按权重随机选择

题目&#xff1a; 题解&#xff1a; class Solution:def __init__(self, w: List[int]):self.pre list(accumulate(w))self.total sum(w)def pickIndex(self) -> int:x random.randint(1, self.total)return bisect_left(self.pre, x)

C++ | Leetcode C++题解之第528题按权重随机选择

题目&#xff1a; 题解&#xff1a; class Solution { private:mt19937 gen;uniform_int_distribution<int> dis;vector<int> pre;public:Solution(vector<int>& w): gen(random_device{}()), dis(1, accumulate(w.begin(), w.end(), 0)) {partial_sum(…

弹簧质点系统求Hessian

Verification https://www.matrixcalculus.org/ (1-l0/norm2(p-q))*(p-q)

游游的游戏大礼包

游游的游戏大礼包 import java.util.*; public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);long n in.nextInt();long m in.nextInt();long a in.nextInt();long b in.nextInt();long ret 0;for(long x 0; x < Math.…

详解ARM汇编条件标志

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 条件标志 在 ARM 指令集中&#xff0c;条件标志是控制指令执行的一种机制&#xff0c;它们用于实现条件分支、比较和其他逻辑操作。 我们平时使用 IDA 调试程…

Navicat Premium安装卸载及使用教程教程

Navicat Premium 17 安装卸载及使用教程教程 0. 卸载 没安装过 Navicat 直接跳过本步骤即可。 正常卸载顺序即可&#xff0c;网上很多教程&#xff0c;这里不演示了 如果怕卸载不干净&#xff0c;最后时候可以执行一下压缩包里面的无限试用 Navicat.bat 即可成功删除Navicat…

Backbone网络详解

Backbone 网络&#xff08;主干网络&#xff09;是深度学习模型中的一个重要组成部分&#xff0c;尤其在计算机视觉任务中。Backbone 网络的主要作用是从输入数据中提取有用的特征&#xff0c;为后续的任务&#xff08;如分类、检测、分割等&#xff09;提供强大的特征表示。常…

Jenkins找不到maven构建项目

有的可能没有出现maven这个选项 解决办法&#xff1a;需要安装Maven项目插件 输入​Maven Integration plugin​

【339】基于springboot的新能源充电系统

毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;新能源充电系统的设计与实现 摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解…

Godot Zelda教程练习1

提示&#xff1a;B站链接&#xff1a;Godot Zelda教程练习 资产链接&#xff1a;项目资产 Godot版本&#xff1a;4.3 文章目录 一、新建项目1、创建项目2、设置项目标签3、项目基本设置4、导入资产 二、图块集和自动平铺1、创建TileMapLayer2、创建Terrian Set1、Match Siders(…

【案例】旗帜飘动

开发平台&#xff1a;Unity 6.0 开发工具&#xff1a;Shader Graph 参考视频&#xff1a;Unity Shader Graph 旗帜飘动特效   一、效果图 二、Shader Graph 路线图 三、案例分析 核心思路&#xff1a;顶点偏移计算 与 顶点偏移忽略 3.1 纹理偏移 视觉上让旗帜保持动态飘动&a…

Android亮屏Job的功耗优化方案

摘要: Job运行时会带来持锁的现象,目前灭屏放电Job的锁托管已经有doze和绿盟标准监管,但是亮屏时仍旧存在过长的持锁现象,故为了优化功耗和不影响用户体验下,新增亮屏放电下如果满足冻结和已运行过一次Job,则进行job限制,当非冻结时恢复的策略 1.现象: (gms_schedu…

Java面试经典 150 题.P55. 跳跃游戏(009)

本题来自&#xff1a;力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解&#xff1a; class Solution {public boolean canJump(int[] nums) {int…

源码解析篇 | YOLO11:计算机视觉领域的新突破 !对比YOLOv8如何 ?

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。在2024年9月27日盛大举行的YOLO Vision 2024活动上&#xff0c;Ultralytics公司震撼发布了YOLO系列的最新成员—YOLO11。作为Ultralytics YOLO系列实时目标检测器的最新迭代&#xff0c;YOLO11凭借尖端的准确性、速度和效率…

mac m1 docker本地部署canal 监听mysql的binglog日志

mac m1 docker本地部署canal监听mysql的binglog日志(虚拟机同理) 根据黑马视频部署 1.docker 部署mysql 1.docker拉取mysql 镜像 因为m1是arm架构.需要多加一条信息 正常拉取 docker pull mysql:tagm1拉取 5.7的版本. tag需要自己指定版本 docker pull --platform linux/x…

复现LLM:带你从零训练tokenizer

1. 引言 分词器是每个大语言模型必不可少的组件&#xff0c;但每个大语言模型的分词器几乎都不相同。如果要训练自己的分词器&#xff0c;可以使用huggingface的tokenizers框架&#xff0c;tokenizers包含以下主要组件&#xff1a; Tokenizer: 分词器的核心组件&#xff0c;定…