开发过程中遇到了一个问题,在UI上动态画弧线,花了一天的时间,终于解决了,拿来和大家分享一下(个人场景里只有UI)。
我才用的动态画线的方法是GL画线,有一定的性能开销,unity版本5.3.2.。
GL画线是直接显示在屏幕上的,我想用GL画出UI上一个点的运动轨迹,经过尝试终于实现,首先是UGUI的实现方法:
将Canvas的RenderCamera设置为主摄像机,然后再讲主摄像机的Culling Mask包括UI。
我的GL画线的方法也是在网上找的,一个叫DrawLine的类,自己修改了一下,有兴趣的可以自己找一下。
上一段记录画线点的代码:
Vector3 screenVector;//屏幕坐标
void DrawLineBlack()
{
//将物体坐标转为屏幕坐标
screenVector = Camera.main.WorldToScreenPoint(target.transform.position);
if (startDraw1 == true)
{
//将每次物体旋转过的位置存储进链表
lineInfo1.Add(screenVector);
}
}
这样画出的线就可以在UI上方看到了。
然后是NGUI的,显示画线,这里实现起来并不复杂:
首先将主摄像机的深度值调整为大于UI相机,
然后在上一段代码:
Vector3 screenVector1;//屏幕坐标
void DrawLineBlack()
{
screenVector1 = UICamera.mainCamera.WorldToScreenPoint(targetBlack.transform.position);
if (startDraw1 == true)
{
//将每次物体旋转过的位置存储进链表
lineInfo1.Add(screenVector1);
}
}
这次的camera换成了UICamera。
最终都实现了显示画线的效果。