C# 单位线渲染器错误

C# 单位线渲染器错误,c#,unity3d,drawing,paint,C#,Unity3d,Drawing,Paint,我正在Unity中制作一个绘图应用程序,我正在使用线条渲染器。这是代码,问题是每次我用另一种颜色画新线时,它都是在第一种颜色的后面画的。有人能帮我吗?我只是不知道如何修复 当我切换颜色时,我正在考虑向线条渲染器添加更多的z位置,但我不确定它是否能正常工作 public GameObject lineDrawPrefabs; public Material black; public Material green1; public Material blue;

我正在Unity中制作一个绘图应用程序,我正在使用线条渲染器。这是代码,问题是每次我用另一种颜色画新线时,它都是在第一种颜色的后面画的。有人能帮我吗?我只是不知道如何修复

当我切换颜色时,我正在考虑向线条渲染器添加更多的z位置,但我不确定它是否能正常工作

    public GameObject lineDrawPrefabs;
    public Material black;
    public Material green1;
    public Material blue;
    public Material pink;
    public Material orange;
    public Material brown;
    public Material green2;
    public Material blue2;
    public Material yellow;
    public Material red;
    public Material white;

    public static string nowcolor;
    private bool isMousePressed;
    private GameObject lineDrawPrefab;
    private LineRenderer lineRenderer;
    List<Vector3> drawPoints = new List<Vector3>();

   // public static bool pencil;



    void Start()
    {

        isMousePressed = false;     
    }


    void Update()
    {
      //  if (Input.GetMouseButtonDown(1))
      //  {
       //     // delete the LineRenderers when right mouse down
       //     GameObject[] delete = GameObject.FindGameObjectsWithTag("LineDraw");
        //    int deleteCount = delete.Length;
        //    for (int i = deleteCount - 1; i >= 0; i--)
        //        Destroy(delete[i]);
      //  }

        if (Input.GetMouseButtonDown(0))
        {
            // left mouse down, make a new line renderer
            isMousePressed = true;
            lineDrawPrefab = GameObject.Instantiate(lineDrawPrefabs) as GameObject;
            lineRenderer = lineDrawPrefab.GetComponent<LineRenderer>();
            CheckColor();
            lineRenderer.SetVertexCount(0);
        }
        else if (Input.GetMouseButtonUp(0))
        {
            // left mouse up, stop drawing
            isMousePressed = false;
            drawPoints.Clear();
        }

        if (isMousePressed)
        {
            // when the left mouse button pressed
            // continue to add vertex to line renderer
            Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            mousePos.z = -1000;
            if (!drawPoints.Contains(mousePos))
            {
                drawPoints.Add(mousePos);
                lineRenderer.SetVertexCount(drawPoints.Count);
                lineRenderer.SetPosition(drawPoints.Count - 1, mousePos);
            }
        }
    }

    public static void deletedrawing() {
        //     // delete the LineRenderers when right mouse down
           GameObject[] delete = GameObject.FindGameObjectsWithTag("LineDraw");
           int deleteCount = delete.Length;
           for (int i = deleteCount - 1; i >= 0; i--)
           Destroy(delete[i]);
    }
公共游戏对象线条预设;
公共材料黑色;
公共材料绿色1;
公共材料蓝色;
公共材料粉红色;
公共材料橙色;
公共材料棕色;
公共材料2;
公共材料2;
公共材料黄色;
公共材料红色;
公共材料白色;
公共静态字符串颜色;
私人住宅;
私有游戏对象线绘制预制;
专用线条渲染器线条渲染器;
列表绘制点=新列表();
//公共静电笔;
void Start()
{
isMousePressed=false;
}
无效更新()
{
//if(Input.GetMouseButtonDown(1))
//  {
////鼠标右键按下时删除线条渲染器
//GameObject[]delete=GameObject.FindGameObjectsSwithTag(“LineDraw”);
//int deleteCount=delete.Length;
//对于(int i=deleteCount-1;i>=0;i--)
//销毁(删除[i]);
//  }
if(Input.GetMouseButtonDown(0))
{
//按住鼠标左键,创建新行渲染器
isMousePressed=true;
lineDrawPrefable=GameObject。实例化(lineDrawPrefables)为GameObject;
lineRenderer=lineDrawPrefable.GetComponent();
CheckColor();
lineRenderer.SetVertexCount(0);
}
else if(Input.GetMouseButtonUp(0))
{
//鼠标左键向上,停止绘图
isMousePressed=false;
支点。清除();
}
如果(按下按钮)
{
//当按下鼠标左键时
//继续将顶点添加到线渲染器
Vector3 mousePos=Camera.main.ScreenToWorldPoint(Input.mousePosition);
mousePos.z=-1000;
如果(!drawPoints.Contains(鼠标点))
{
支点。添加(鼠标点);
lineRenderer.SetVertexCount(drawPoints.Count);
lineRenderer.SetPosition(drawPoints.Count-1,鼠标点);
}
}
}
公共静态void deletedrawing(){
////鼠标右键按下时删除线条渲染器
GameObject[]delete=GameObject.FindGameObjectsSwithTag(“LineDraw”);
int deleteCount=delete.Length;
对于(int i=deleteCount-1;i>=0;i--)
销毁(删除[i]);
}

我解决了这个问题,我只是在图层中使用了order,每次用户选择颜色时添加+1,现在工作正常

将此添加到主脚本中

 public static int orderinlayer = 1;
并添加lineRenderer.sortingOrder=orderinlayer;这里

 if (Input.GetMouseButtonDown(0))
        {
            isMousePressed = true;
            lineDrawPrefab = GameObject.Instantiate(lineDrawPrefabs) as GameObject;
            lineRenderer = lineDrawPrefab.GetComponent<LineRenderer>();
            lineRenderer.sortingOrder = orderinlayer;
            CheckColor();
            lineRenderer.SetVertexCount(0);
        }

对于每种
颜色。现在
工作正常

你能提供一张说明问题所在的带注释的图片吗?我认为对于视觉问题,这类信息将非常有用。
ScriptLineGameobject.orderinlayer += 1;