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

文章介绍了如何处理UnityUI中的Layout组件和Animator动画对物体位置的影响,包括强制重建布局、管理动画片段、使用空物体替代控制、添加空动画解除锁定以及禁用Animator的临时解决方案。
摘要由CSDN通过智能技术生成

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位置后再恢复回来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值