更改LineRenderer绘制顺序

时间:2018-02-08 19:56:46

标签: c# unity3d

我编写了下面的脚本,它创建了LineRenderer行对象,并模拟了一个基本的绘画' Unity3d中的能力。这很好用但是我似乎无法正确地将线条渲染到彼此之上。似乎是随机的,哪个会出现在前面,哪个会出现在后面。

例如:

Example

在此图像中,按照黑色,橙色,蓝色,黄色,红色,绿色的顺序绘制线条。但是你可以看到这不是它们被渲染的顺序。

func googleSignIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, withError error: NSError!) {
    if (error == nil) {
        // successful login
        LoadHomeScreen(sender: sender)
    } else {
        print("\(error.localizedDescription)")
    }
}

2 个答案:

答案 0 :(得分:3)

您可以使用"排序图层" " Order In Layer" 属性来执行此操作。建议使用" Order In Layer" ,因为您需要的只是int值来更改它们。如有必要,仅使用"排序层" 。具有最高" Order In Layer" 值的LineRenderer将在其他LineRenderers之上绘制。

通过脚本更改"在图层中排序"

你的四行:

public LineRenderer line1;
public LineRenderer line2;
public LineRenderer line3;
public LineRenderer line4;

将它们安排在屏幕上:

line1.sortingOrder = 3;
line2.sortingOrder = 2;
line3.sortingOrder = 1;
line4.sortingOrder = 0;

这意味着第1行将放在所有其他行的顶部,然后是第2行,然后是第3行,最后第4行。因此,第4行将被放置在所有行的下方。 这是执行此操作的正确方法,它可以同时处理2D和3D矢量位置。

答案 1 :(得分:0)

我猜你正在 XY 平面上绘制线条渲染器。然后 Z 将表示线渲染器的深度。在int类型的脚本中获取深度变量。每当绘制一条线时,将其增加1.每当您绘制线条时,根据深度设置它的 Z.您可以在 SetPosition 函数调用期间执行此操作。希望这是有道理的。