因为我再次因为 ug ui 的争吵而生病了 -100 次,所以我们知道在做同样的 HorizontalLayoutGroup、ContentSizeFitter 隐身 somewhere 的舞蹈、在每个子元素上贴 LayoutElement 并且在屏幕大小发生变化时战斗方程组的时候,没什么好说的。

是的,UI Toolkit 现在已经存在了,但是我真的感觉 ug ui 工作流程更方便一些。并且,我没有太多的 web 经验,所以如果需要学一个新的 UI 系统从头学的话,我真的不想学。

所以,我写了一个“小帮助脚本”,我在它上面加入了一个功能,如果插入这个脚本,如果可能可以消除一些繁琐的事情。之前不久的时候,我写了这部分的代码,但是之后我的想法扩散了。

我的最初目标只是杀死一些阻碍。我不想再考虑设置方程式、创建一个链条的 fitter、增加 LayoutElement 到每个子元素上面了。你只需要把 AutoLayout 组件添加到一个元素中,告诉它自己大小的模式和如何排列其子元素,然后你就完成了。

但是,在背后面,它使用了一个两步解决方案方法 - 基于 Subform 布局算法 (https://subformapp.com/learn/) - (与morphorm一起) 。比如,相反,它在设置 CSSauto 机制之前,每个块声明自己想要做什么:像素、像素的Hug(包裹子元素)、像素的 Fill(拉伸到剩余空间)、像素的Percentage、像素的AspectRatio 或像素的 TextSize。

在第一步中,它对它的大小进行了从下到上的逐步评估,但是当没有剩余空间的空间时,它在上到下的方向上进行最终的评估。

由于 ContentSizeFitters 嵌套有一个很可怕的习惯,一直要2-3 个帧才会settle的,所以我将 solver 在一整个单独的确定通路中推入了 Burst。所以,这使得我能够在没有使用 GC 的情况下修改 ui。

我如果你还有更进一步的问题,那么我也可以给予您更多有关这个 Burst 的具体信息、数据布局及增量的脏代码的信息。如果是这样的话,请在下面的留言中留言到。

这个 AutoLayout 组件是整个 ug ui 的一整个解决方案。

它支持的功能:

  • 从 AutoLayout 组件中使用的 Row、Column、Grid 和 Absolute 布局。
  • 在一个轴上支持六种模式 (min/max Clamp)。
  • 在 CSS grid 支持的正常样式中,正确使用了 CSS Grid。
  • 可以支持“ 200 1f 2f”模板的 CSS Grid,能够处理 Column-span & Row-span以及能够支持 Dense/Masonry auto-flow。
  • Absoulte 定位功能。
  • 支持标准的对齐以及分布(start / center / end、space-between / around / evenly)。

除了以下所列的功能之外,还有一些其他的功能和边情况的处理。

我主要是在这里发布这个消息是为了看看大家对我这个 AutoLayout 的想法(是的,我写了一个“小帮助脚本”,然后事态发展了)并且看看大家的建议和反馈。

接下来,我有三个问题:

  1. 如果可以的话,是否有想用这个 AutoLayout 组件来试用的开发者呢?
  2. 一个在 Unity 中的 ui / 布局问题,你经常遇到的,是让你在你项目中工作的时候困扰你最大的 ui / 布局问题。
  3. 一个工具需要以下功能(是的,还有其他功能)才有可能让你使用它吗?