uGUI中我们首先需要选择一种Canvas的渲染模式,包括Screen Space - Overlay,Screen Space - Camera和World Space。
Screen Space - Overlay
在该模式下,世界坐标(transform.Position)和屏幕坐标是重合的,即左下为(0,0),右上为(screen.width,screen.height).因此,在该模式下进行屏幕相关的操作时非常方便的。
Screen Space - Camera
在没有设置Camera时,它和Screen Space - Overlay是一样的。
在设置了Camera时,世界坐标(transform.Postion)和它的Camera相关,在正交相机投影时与Size有关;在透视投影时与FOV和Plane Distance相关,具体参见
很多时候我们需要对屏幕坐标进行操作,比如处理鼠标或者touch输入还有就是我们需要计算UI是否超出屏幕边框,来计算UI的显示位置。
我们这里以计算UI显示位置为例,首先我们需要得到UI在屏幕中的位置使用世界坐标→屏幕坐标:camera.WorldToScreenPoint(transform.position);来得到对应的屏幕坐标,然后需要得到UI的大小使用rect transform获得rect的width和height,注意,该width和height可能并不是UI相对于屏幕的宽和高,因为该值uGUI是根据Canvas的的宽高进行计算的。我们需要对width和height都乘以Canvas.scaleFactor来获得相对于屏幕分辨率的UI大小。(该计算同样适用于Screen Space - Overlay)
现在我们已获取到UI的位置和大小,接下