NGUI TweenScale组件 卡延时导致图片刷新问题

来源:互联网 发布:淘宝客推广效果 编辑:程序博客网 时间:2024/05/12 06:29

本文地址:http://blog.csdn.net/t163361/article/details/50426063
前几天遇到一个图片不刷新的问题,不必现。后来发现通过在显示界面的时候下断点然后再运行,就会重现现象。
具体观察不显示的UI物体发现打开线框模式后,没有对应的模型点渲染。定位为对应物体的渲染模型没有生成
后来发现出问题的组件根节点上有个TweenScale组件做缩放。
每次显示前会调用
tweenScale.ResetToBeginning();
tweenScale.PlayForward();
最后跟踪到UIWidget.cs里面的UpdateTransform()这个函数.
此函数根据本组件世界坐标的变化与否判断组件是否移动,去触发
UIGeometry.cs中的ApplyTransfrom()更新组件的渲染mMat模型信息。

具体的导致异常的原因就是调用ResetToBeginning的时候,因为根节点缩放值为零,所以子组件的渲染模型坐标都是0,然后因为机器卡,在第一次触发Update更新的时候,tweenScale的时间已经结束,于是直接触发结束函数,此时UpdateTransform中的逻辑判断本组件未更新。而没有再次将mMat信息进行刷新。

修改办法就是将上面两个函数分开,显示的时候调用ResetToBeginning()。
同时在界面的Update里调用一次PlayForward()函数,问题解决。

0 0