如何在Unity 5中的Canvas上绘制2D图形

时间:2016-07-30 10:23:48

标签: c# unity3d graph unity5 unity3d-2dtools

我需要为我使用Unity制作的分贝应用程序绘制图形。以下解决方案有效,但不如我的雇主所希望的那样精确。我可以让这个图表看起来更专业和准确吗?基本上我希望线宽相等,并防止线几乎看不见,如下图所示:http://puu.sh/qjSvO/a51c11cef5.png

我正在考虑制作2D纹理并使用SetPixel,但我不确定这是否正确。

图形在画布上绘制,作为可伸缩UI的一部分。

 public class Graph : MonoBehaviour {

 public float graphWidth;
 public float graphHeight;
 LineRenderer newLineRenderer;
 List<int> decibels;
 int vertexAmount = 50;
 float xInterval;

     GameObject parentCanvas;

     // Use this for initialization
     void Start ()
     {
         parentCanvas = GameObject.Find("Canvas");
         graphWidth = transform.Find("Linerenderer").GetComponent<RectTransform>().rect.width;
         graphHeight = transform.Find("Linerenderer").GetComponent<RectTransform>().rect.height;
         newLineRenderer = GetComponentInChildren<LineRenderer>();
         newLineRenderer.SetVertexCount(vertexAmount);

         xInterval = graphWidth / vertexAmount;
     }

     //Display 1 minute of data or as much as there is.
     public void Draw(List<int> decibels)
     {
         if (decibels.Count == 0)
             return;

         float x = 0;

         for (int i = 0; i < vertexAmount && i < decibels.Count; i++)
         {
             int _index = decibels.Count - i - 1;

             float y = decibels[_index] * (graphHeight/130); //(Divide grapheight with the maximum value of decibels.
             x = i * xInterval;

             newLineRenderer.SetPosition(i, new Vector3(x - graphWidth / 2 , y - graphHeight / 2 , 0));
         }
     }
 }

1 个答案:

答案 0 :(得分:0)

使用编辑器,您可以&#34;剪切&#34;将精灵分成九块,这样每一面都有一个纹理,每个角落都有一个纹理,还有一个纹理可以填充它。我建议使用它来使它看起来很好,如果你想要的话。我自己使用它已经有一段时间了,但也许您可以在Unity手册中找到相关信息。