20170810 Unity项目笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010848412/article/details/77067701

今天有个需求。里面涉及到NGUI下的坐标转换。这本来是很简单的事情。

获取NGUI下某个控件的屏幕坐标代码如下:

UICamera.currentCamera.WorldToScreenPoint(obj.transform.position);
然后我也就信心满满地等待结果。

结果发现不对劲。

我们知道,Camera.WorldToScreenPoint 得到的坐标是以屏幕左下为0,0,右上是(pixelWidth,pixelHeight) 的一个二维坐标。换句话说,如果一个物体能够在对应的Camera下看得到,那么对应屏幕坐标x和屏幕坐标y 肯定不是一个负数。

而我得到的居然是一个负数。

经过一个多小时的折腾。

才发现,我的获取屏幕坐标的代码在Awake 里面。这个时候物体的坐标还未被NGUI正确地初始化。导致得到的屏幕坐标也是不对的。

经验1: NGUI 设置了Anchor 后,可能初始坐标不是正确的。

经验2:某个函数里面执行错误的,不代码一直是错误的。可以在Update里面一直执行,看看是不是和一开始执行的有差异,从而可以判断是不是Awake 函数 或者 Start 函数中还未初始化的原因。

猜你喜欢

转载自blog.csdn.net/u010848412/article/details/77067701