//=============================单个画矩形框
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DrawTest : MonoBehaviour {
/// <summary>
/// 材质球
/// </summary>
public Material mat;
/// <summary>
/// 鼠标开始的位置
/// </summary>
private Vector2 FirstMousePosition;
/// <summary>
/// 鼠标结束的位置
/// </summary>
private Vector2 SecondMousePosition;
private bool StartRender = false;
private Renderer[] gameobjects;
// Use this for initialization
void Start ()
{
gameobjects = FindObjectsOfType<Renderer>();
}
// Update is called once per frame
void Update ()
{
//获取鼠标按下
if(Input.GetMouseButtonDown(0))
{
StartRender = true;
FirstMousePosition = Input.mousePosition;
PickGameObject();
}
//获取鼠标抬起
if (Input.GetMouseButtonUp(0))
{
StartRender = false;
ChangeTwoPoint();
PickGameObject();
FirstMousePosition = SecondMousePosition = Vector2.zero;
}
SecondMousePosition = Input.mousePosition;
}
private void OnPostRender()
{
if (StartRender)
{
mat.SetPass(0);
GL.LoadOrtho();
GL.Begin(GL.LINES);
DrawLine(FirstMousePosition.x, FirstMousePosition.y, SecondMousePosition.x, SecondMousePosition.y);
GL.End();
}
}
/// <summary>
/// 画线
/// </summary>
/// <param name="x1"></param>
/// <param name="y1"></param>
/// <param name="x2"></param>
/// <param name="y2"></param>
private void DrawLine(float x1, float y1, float x2, float y2)
{
GL.Vertex(new Vector3(x1 / Screen.width, y1 / Screen.height, 0));
GL.Vertex(new Vector3(x2 / Screen.width, y1 / Screen.height, 0));
GL.Vertex(new Vector3(x2 / Screen.width, y1 / Screen.height, 0));
GL.Vertex(new Vector3(x2 / Screen.width, y2 / Screen.height, 0));
GL.Vertex(new Vector3(x2 / Screen.width, y2 / Screen.height, 0));
GL.Vertex(new Vector3(x1 / Screen.width, y2 / Screen.height, 0));
GL.Vertex(new Vector3(x1 / Screen.width, y2 / Screen.height, 0));
GL.Vertex(new Vector3(x1 / Screen.width, y1 / Screen.height, 0));
}
///