2016-09-07 4 views
-1

Я делаю приложение для рисования в Unity, и я использую средство визуализации линии. Вот код, проблема заключается в том, что каждый раз, когда я делаю новую строку с другим цветом, она обращается к первому цвету. Может кто-нибудь мне помочь? Я просто не знаю, как исправить.Unity linerenderer error

Я думал о добавлении немного более 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]); 
    } 

Here is the image,first time I used the black color,then the green

+0

Можете ли вы предоставить аннотированное изображение, указывающее на то, что проблема? Я думаю, что для визуальных проблем такая информация была бы очень полезной. – Serlite

ответ

0

Я установил вопрос, я просто использовал порядок в слое, добавил +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; 

для каждого color.Now его работы!

Смежные вопросы