有一大坑: 如果你用了 ContentSizeFitter UI 大小默认是第二帧里才计算出来的!(Update 第二次被调用) 这是测试代码
private Text text;
private RectTransform rect;
void Awake()
{
rect = GetComponent<RectTransform>();
print("awake: " + rect.rect.size.y);
}
void Start ()
{
print("start: " + rect.rect.size.y);
}
void Update()
{
print("update: " + rect.rect.size.y);
}
结果
也就是 Start() 和 Awake() 里调用都返回 0 必须先 LayoutRebuilder.ForceRebuildLayoutImmediate(rect); 手动刷新才能返回正确结果
参考
https://forum.unity.com/threads/content-size-fitter-refresh-problem.498536/ https://www.cnblogs.com/zhoushiya/p/12209939.html
|