在Unity的界面上绘制一张折线图
1、预先制作好折线图的背景图片并拖进Unity里
2、折线图本身需要一个材质,这里我们在脚本里自己创建一个材质球`
static Material lineMaterial;//材质球
public Texture Background;//背景图片
void Start() {
CreateLineMaterial();//创建材质球
}
static void CreateLineMaterial()
{
if (!lineMaterial)
{
Shader shader = Shader.Find("Hidden/Internal-Colored");
lineMaterial = new Material(shader);
lineMaterial.hideFlags = HideFlags.HideAndDontSave;
//设置参数
lineMaterial.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha);
lineMaterial.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
//设置参数
lineMaterial.SetInt("_Cull", (int)UnityEngine.Rendering.CullMode.Off);
//设置参数
lineMaterial.SetInt("_ZWrite", 0);
}
}
3、定义折线图各个点的值,使用Unity的GL画线绘制需要的折线图
int[] PointPosi = new int[5]{100,200,0,150,120};
void GLdemoV()
{
GL.PushMatrix(); //保存当前Matirx
GL.LoadPixelMatrix();//设置pixelMatrix
GL.Begin(GL.LINES);
lineMaterial.SetPass(0);//mat是一个材质,注意shader的选择,否则颜色无效
GL.Color(Color.red);
for(int i=1;i<5;i++){
GL.Vertex3(60+120*(i-1), PointPosi[i-1] +10, 0);
GL.Vertex3(60+120*(i), PointPosi[i] +10, 0);
}
GL.End();
GL.PopMatrix();//读取之前的Matrix
}
4、最后调用画线的函数以及背景图就可以在界面上显示需要的折线图了`
void OnGUI()
{
GUI.Label(new Rect(30,190,600,350),Background);
GLdemoV();
}
最后效果