有一大坑:
如果你用了 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