萧熊猫先生于一个月前辞职了,为了完成心中的梦想(做个游戏),开始每天在房间里努力做着自己的游戏。(其实每天都在玩)
今天主要讲两个问题。众所周知,策划都是智障。(等等,我现在也算半个策划了……)经常会有在自适应的layout里嵌套layout,然后在子级的文本和后面的图还要自适应,以及更多的自适应的情况……


如果是自己算正确的位置,显然不科学 ,费脑子不说,效率很低,debug过程会让人崩溃。unity官方想到了这个情况,所以提供了LayoutRebuilder.ForceRebuildLayoutImmediate(RectTransform)方法。可以让强制重新布局。

不过unity是个铁憨憨啊,有的方法真的只是够用就行,就像5.0之后就再也没有重搞过编辑器工具一样……(美其名曰,重做这玩意有啥用,够用就行了)
这个方法真的就只是重新计算子组件的位置。并不会触发子组件内部的重新布局。
所以,要想对付这样的自适应里的自适应,两种解决办法。
一个是每个需要重新布局的组件都执行一下方法,这样的话,有点繁琐了。
public void Test()
{
LayoutRebuilder.ForceRebuildLayoutImmediate(layout1.GetComponent<RectTransform>());
LayoutRebuilder.ForceRebuildLayoutImmediate(layout2.GetComponent<RectTransform>());
LayoutRebuilder.ForceRebuildLayoutImmediate(layout3.GetComponent<RectTransform>());
}
另一个是对这个组件递归查找,所有带有LayoutGroup的组件都执行一遍重新布局,不过这就对消耗有点要求了。(毕竟GetComponent的消耗也不怎么好)
public

本文深入探讨Unity中自适应布局的复杂性,特别是在嵌套布局及子组件自适应问题上的挑战。通过介绍LayoutRebuilder.ForceRebuildLayoutImmediate方法的使用及局限性,提出了两种解决方案:一是对特定组件逐个调用方法,二是递归查找并执行所有LayoutGroup组件的重新布局,同时分享了确保布局更新正确的技巧。
最低0.47元/天 解锁文章
1104

被折叠的 条评论
为什么被折叠?



