【Unity】优化UI(二)

Unity UI的基本原理

理解Unity UI系统的组成部分是很重要的。有几个基础的类和组件共同组成了UI系统。这篇文章定义了几个术语,贯穿了这一系列文章,然后讨论了一些Unity UI关键的低级的操作。

术语

Canvas是本地代码,Unity的渲染系统使用该组件来分层显示的游戏世界空间或上层的几何图形。

Canvases负责合把组成的几何图形合成到batches中,生成合适的渲染指令并发送到Unity的图形系统。这些操作都是在本地C++代码完成的,称为rebatchbatch build。当Canvas被标记为包含几何图形,那么就会请求rebatching,这个Canvas也会被认为是脏数据(dirty)。

几何图形是通过Canvas Renderer组件提供给Canvases的。

Sub-canvas就是嵌套在另一个Canvas的Canvas组件。Sub-canvases将孩子节点与父亲节点分离开来。脏孩子数据不会造成父亲rebuild它的几何图形,反之亦然。但有几种边界条件不符合这种情况,比如改变父亲的Canvas会造成孩子Canvas重新调整大小(resize)。

GraphicUnityUI C#库提供的一个基础类。它是Unity UI C#类的基类,为Canvas系统提供可绘画的几何图形。大多数内置的Unity UI Graphics是通过MaskableGraphic子类实现的,通过IMaskable接口可以实现是否可遮罩。可绘制的最主要的子类是ImageText,它们都提供了同名的组件。

Layout组件控制RectTransforms的大小和位置,通常用来创建需要相对父节点大小和位置的较复杂的布局。Layout组件依赖RectTransforms并只影响跟RectTransforms相关的属性。Layout组件并不依赖Graphic类,可以独立于Unity UIGraphic组件使用。

GraphicLayout组件都依赖CanvasUpdateRegistry类,这个类并没有暴露在Unity Editor界面。这个类可以追踪到必须更新的Layout组件列表和Graphic组件列表,当这些组件相关的Canvas调用willRenderCanvases事件的时候就会触发更新。

LayoutGraphic组件更新的时候会调用rebuildrebuild过程在后面的文档中会详细讨论。

你可能感兴趣的:(【Unity】优化UI(二))