• 【Unity3D】获取UGUI位置不正确问题


    1、Layout组件影响(HorizontalLayout、Vertical...等)

            首先必须SetActive显示所有Layout组件下的UGUI物体,再进行立即强制重建布局
    UnityEngine.UI.LayoutRebuilder.ForceRebuildLayoutImmediate(rectTransform)传入的是一个RectTransform组件对象,然后才去获取UGUI位置。

    2、Animator动画系统影响

            原因:由Animator播放的动画片段播放完后,Animator依然会使用动画片段最后一帧动画参数锁死所控制的参数,锁死意思是你无法通过任何手段去修改这个参数了,除非禁用Animator或者播放另一个不影响这参数的动画片段。

            2.1 检查UGUI其身上以及其所有父物体是否有Animator控制它,若有则检查每一个Animator的每一个AnimationClip动画片段,找到控制它的动画帧,删掉这些控制它的动画帧即可,然后才去获取UGUI位置。
            若不想删除动画帧,可以使用一个空物体代替它作为动画帧控制对象,它再作为空物体的子物体即可,除非动画帧控制的是UGUI物体的Image之类的,才无法使用空物体形式,例如控制position、scale、rotaion都可以利用再新增一个空物体作为控制对象去间接控制UGUI,而不要影响到UGUI的位置。

            2.2 由于2.1方法过于复杂,你可以找到会控制UGUI的动画片段后,在Animator动画控制器里添加一个空动画,在播放完控制UGUI的动画片段后,连上空动画即可解除锁死动画控制参数。

            2.3 最暴力做法,将全部控制它的Animator禁用,获取UGUI位置后再恢复回来。

  • 相关阅读:
    狂神说笔记 快速入门Nginx
    最长路——拓扑排序
    @Autowired注解以及失效几个原因
    Android平台GB28181设备接入模块之SmartGBD
    从一个死锁问题分析优化器特性
    Linux系统基本使用 与 程序部署 - JavaEE初阶 - 细节狂魔
    vue生命周期
    【力扣】42. 接雨水
    操作系统学习——进程调度算法
    vite打包部分页面不显示问题+图片不显示问题
  • 原文地址:https://blog.csdn.net/qq_39574690/article/details/134263891