【Unity】Unity中ContentSizeFitter有时无法及时自适应大小问题解决
一、问题
unity中在做对话框跟随文本大小变化时,按照如下图设置时,绝大部分情况下都没有问题,但是小概率会出现对话框背景无法自适应文本的大小。
文本
文本父节点,也就是文本的背景框
二、原因
是因为这个组件是在启用的下一帧执行的,所以我们会发现对Content的子物体重新赋值以改变其长度或者重新失活再激活子物体,可以使其刷新、生效。上面文本的背景小概率出现问题是因为刷新的下一个文本和上一个文本行数不一样,导致自适应不及时,
三、解决
解决此问题首先确认图示组件是否都正确配置,然后在赋值处加入以下两句代码
Canvas.ForceUpdateCanvases();
LayoutRebuilder.ForceRebuildLayoutImmediate(“你的ContentSizeFitter组件的RectTransform”);
也可以直接写一个ContentSizeFitter的扩展类
using UnityEngine;
using UnityEngine.UI;public static class ContentSizeFitterExtension
{public static void ResetFitter(this ContentSizeFitter contentSizeFitter){Canvas.ForceUpdateCanvases();RectTransform rectTransform = contentSizeFitter.gameObject.GetComponent<RectTransform>();if (rectTransform)LayoutRebuilder.ForceRebuildLayoutImmediate(rectTransform);}
}
调用方法
contentSizeFitter.ResetFitter();
Over~
觉得有用就点个赞吧
你的支持是我创作最大的动力~