安静如鸡

  • Home
  • About Me
  • Contact Me
  • 东京女子篮球活动记录
一个博客
  1. 首页
  2. Tech
  3. Unity
  4. 正文

【Unity小贴士】content size fitter

2022-09-30 0人点赞 0条评论

Unity的Layout提供了几种自适应方式。
一个是通过LayoutGroup来确保子物体的自适应方式。一种是给物体直接加上content size fitter。
但是如果不注意,非常容易造成冲突,导致自适应没办法达成效果

比如上图这种nest,Overlap和Layout Group都有一个Vertical Layout Group的组件,Text123则都有一个content size fitter组件。但是如果Text2文本过长,从脚本控制Text2显示的时候,就会和Text3和Text1有Overlap的现象。

Text2过长会有overlap现象

基本上这种设置的情况下会Unity会出现警告。

其实这种时候只要把ContentSizeFitter去掉,用父节点的LayoutGroup来控制自适应就可以解决问题。

但是网上很多workaround是用了另外一种方法,用MarkLayoutForRebuild把所有的layout都mark然后让Unity再次build。

但是这种方法有一个问题就是如果这一个周期里面UI已经被SetDirty了,那即使再MarkLayoutForRebuild也会被无视掉。所以很多人就选择了等一帧,下一帧的开始直接mark,然后再rebuild。

yield return new WaitForEndOfFrame();
LayoutRebuilder.MarkLayoutForRebuild(rect);

这就完全没有必要搞的这么复杂,一个是要重构layout必须取得所有父节点的Rect然后还要再渲染一遍,费力又费时。就直接把prefab重新整理一下是最好的选择了。

标签: 暂无
最后更新:2022-10-12

Ellison

什么都懂点,什么都不精。属于混吃等死,享受生活,过一天算一天的享乐主义。喜欢电影,阅读,以及游戏和美食。

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2024 安静如鸡. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang