本文主要是介绍NGUI TweenScale组件 卡延时导致图片刷新问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本文地址: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()函数,问题解决。
这篇关于NGUI TweenScale组件 卡延时导致图片刷新问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!