我有一个带有 AnimatorController 的 ui 面板。该面板包含一个带有 AspectRatioFitter 组件(unity ui 系统附带的组件)的图像。纵横比 fitter 设置为“Fit In Parent”,因此有一个名为“Aspect Ratio”的公共浮点变量来控制纵横比。
动画控制器启动一个随着时间改变“纵横比”值的动画。
问题是矩形变换的大小没有根据新的纵横比更新。不是在动画期间,也不是在动画结束时。它从不应用新值。
如果我手动更改值,或者如果我禁用然后手动启用 AspectRatioFitter 组件,我可以看到它工作。
出于测试目的,我尝试在 GameObject 上的 Update() 方法中调用以下内容。但它不会更新方面:
LayoutRebuilder.MarkLayoutForRebuild(this.transform as RectTransform);
LayoutRebuilder.ForceRebuildLayoutImmediate(this.transform as RectTransform);
Canvas.ForceUpdateCanvases();
this.GetComponent<Image>().SetAllDirty();
this.GetComponent<Image>().SetLayoutDirty();
this.GetComponent<Image>().Rebuild(CanvasUpdate.LatePreRender);
this.GetComponent<Image>().Rebuild(CanvasUpdate.Layout);
this.GetComponent<Image>().Rebuild(CanvasUpdate.MaxUpdateValue);
this.GetComponent<Image>().Rebuild(CanvasUpdate.PostLayout);
this.GetComponent<Image>().Rebuild(CanvasUpdate.Prelayout);
this.GetComponent<Image>().Rebuild(CanvasUpdate.PreRender);
那么为什么布局没有更新呢?我该如何解决这个问题?