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

Unity UI Toolkit学习笔记-Visual Tree

🌲Visual Tree

  • 🥡Visual Tree
  • 🍧Visual elements
  • 🍣 Panel
  • 🍵 绘制顺序
    • 💡BringToFront()
    • 💡SendToBack()
    • 💡PlaceBehind()
    • 💡PlaceInFront()
  • 🍝坐标和位置系统

🥡Visual Tree

Visual element 在UI Toolkit中是最基础的元素,由多个Visual element构建具有父子关系的层级树

在这里插入图片描述

🍧Visual elements

VisualElement类是所有ui元素的基类,该类包含样式、布局数据和事件句柄。ui元素 可以拥有子ui元素。
通过Stylesheet(uss)可以自定义每个ui元素的的样式,可以使用事件回调对特定的交互进行处理。VisualElement子类可以定义不同的行为方法,内置的控制器:Button、Toggle、Label等等都有各自的功能。

🍣 Panel

Visual Tree 的父节点是一个Panel,一个Viusal Tree必须要放到Panel中才能渲染。所有的Panel属于Editor Window或者UIDocument,Panel也负责焦点控制和事件分发。
每个ui元素持有所属Panel的直接引用。

🍵 绘制顺序

绘制顺序遵循深度优先:
在这里插入图片描述

VisualElement提供了几个更改绘制顺序的方法:

💡BringToFront()

移动到兄弟节点最后让ui绘制到最前
请添加图片描述

💡SendToBack()

移动到兄弟节点最前面,这样就会被其它兄弟节点挡住
请添加图片描述

💡PlaceBehind()

a.PlaceBehind(b):把a元素放到b前,这样a就比b先绘制,b就可以挡住a。
请添加图片描述

💡PlaceInFront()

a .PlaceInFront(b):把a元素放到b后,使得a比b后绘制,a就可以挡住b
请添加图片描述

🍝坐标和位置系统

以左上角为原点
UI Toolkit 有两种坐标:

  1. 相对坐标:子物体会由父ui进行排列,子物体在排列好的位置的基础上再进行偏移。
  2. 绝对坐标:以父ui的左上角为原点进行偏移。

可以通过样式表修改每个ui元素的坐标类型:
在这里插入图片描述
也可以通过代码设置:

 var newElement = new VisualElement();
 newElement.style.position = Position.Relative;
 newElement.style.left = 15;
 newElement.style.top = 35;

VisualElement.layout.position:以父ui的左上角为原点的坐标即绝对坐标。
VisualElement.transform.position:还没搞懂是干啥的,设置一个很小的值也会导致位置跑到很远。。。;

相关文章:

  • Dubbo线程池
  • 面试必问 | 必须了解的MySQL三大日志:binlog、redolog 和 undolog
  • 【C++】obj模型文件解析(tiny_obj_loader)
  • 数智随行 | 财务数字化转型的抓手:业务能力标准化
  • 22 C++设计模式之备忘录(Memento)模式
  • 小物体的目标检测的研究综述
  • 一文搞定Linux信号
  • 跟着MindSpore一起学习深度概率
  • 模型的动态LOD优化
  • 人工智能学习日记------KNN分类
  • Salesforce撤离中国后,谁来缓解在华跨国企业的焦虑?
  • 分布式系列精讲 分布式系统和单体系统之间到底有什么区别?
  • 什么是物联网数据采集网关?物联网数据采集网关的特点
  • 【vue3】05. 跟着官网学习vue3
  • 金九银十,阿里高级测开给面试者的十大建议
  • 【Leetcode】101. 对称二叉树
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • iOS 颜色设置看我就够了
  • JAVA SE 6 GC调优笔记
  • js面向对象
  • Linux链接文件
  • Linux中的硬链接与软链接
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • overflow: hidden IE7无效
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • SwizzleMethod 黑魔法
  • TypeScript迭代器
  • Vue学习第二天
  • 浏览器缓存机制分析
  • 马上搞懂 GeoJSON
  • 前端相关框架总和
  • 事件委托的小应用
  • 为视图添加丝滑的水波纹
  • 详解NodeJs流之一
  • 优化 Vue 项目编译文件大小
  • ionic入门之数据绑定显示-1
  • 进程与线程(三)——进程/线程间通信
  • # 透过事物看本质的能力怎么培养?
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • ###项目技术发展史
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (SpringBoot)第七章:SpringBoot日志文件
  • (十)c52学习之旅-定时器实验
  • (十六)Flask之蓝图
  • (四)Linux Shell编程——输入输出重定向
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (转)mysql使用Navicat 导出和导入数据库
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET Core中的去虚
  • .NET 简介:跨平台、开源、高性能的开发平台