今天在做界面的时候,使用了vertical Layout Group 和 Content Size Fitter,但是当我去获取的content里面的子节点的Rect Transform的坐标的时候发现坐标不对。后面上网查了下原因,得到了以下结论:
注意,某些Rect Transform(比如Content Size Fitter)执行计算是在一帧结束时、计算UI顶点之前,以确保它的计算能考虑到这一帧的其他所有计算结果。也就是说首次Start()和Update()结束时它们并没有被计算过。
你可以创建Start()时主动触发Canvas.ForceUpdateCanvases()方法调用。这样可以强制Canvas不在这一帧结束时更新,而是在这个方法被调用时更新。(然而Canvas.ForceUpdateCanvases()性能不佳,不到不得已的情况,不必使用)