//c# example
using UnityEngine;
public class lineOverTexture : MonoBehaviour {
private static readonly Color lineColor = new Color (1f, 0f, 0f, 0.88f);
// Use this for initialization
void Start () {
CreateLineMaterial();
}
public Texture aTexture;
void OnGUI() {
GUI.DrawTexture(new Rect(10, 10, 60, 60), aTexture, ScaleMode.ScaleToFit);
if (Event.current.type != EventType.Repaint)
return;
DrawLines();
}
// Update is called once per frame
void Update () {
}
private void DrawLines()
{
lineMaterial.SetPass(0);
GL.PushMatrix ();
GL.Begin (GL.LINES);
GL.Color (lineColor);
DrawLine(new Vector2(10.0f, 10.0f), new Vector2(70.0f, 10.0f));
DrawLine(new Vector2(70.0f, 10.0f), new Vector2(70.0f, 70.0f));
DrawLine(new Vector2(70.0f, 70.0f), new Vector2(10.0f, 70.0f));
DrawLine(new Vector2(10.0f, 70.0f), new Vector2(10.0f, 10.0f));
GL.End ();
GL.PopMatrix ();
}
private void DrawLine (Vector2 p1, Vector2 p2)
{
GL.Vertex (p1);
GL.Vertex (p2);
}
private Material lineMaterial;
private void CreateLineMaterial()
{
if( !lineMaterial ) {
lineMaterial = new Material( "Shader \"Lines/Colored Blended\" {" +
"SubShader { Pass { " +
" Blend SrcAlpha OneMinusSrcAlpha " +
" ZWrite Off Cull Off Fog { Mode Off } " +
" BindChannels {" +
" Bind \"vertex\", vertex Bind \"color\", color }" +
"} } }" );
lineMaterial.hideFlags = HideFlags.HideAndDontSave;
lineMaterial.shader.hideFlags = HideFlags.HideAndDontSave;
}
}
}
↧