简单粗暴上代码。
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
public class SceneWindow : EditorWindow
{
private Vector3[] points = new Vector3[3]
{
new Vector3(){x = 0,y =0,z = 0},
new Vector3() {x = 2,y= 0,z=0},
new Vector3(){x=2,y=0,z=1}
};
[MenuItem("Tools/SceneWindow")]
static void Open()
{
CreateWindow<SceneWindow>();
}
public void OnEnable()
{
SceneView.duringSceneGui -= OnSceneGUI;
SceneView.duringSceneGui += OnSceneGUI;
}
public void OnDestroy()
{
SceneView.duringSceneGui -= OnSceneGUI;
}
public void OnSceneGUI(SceneView view)
{
Handles.color = Color.blue;
for (int i = 0; i < 3; i++)
{
Handles.Label(points[i],$"点{i}", new GUIStyle() { fontSize = 20 });
}
for (int i = 0; i < 2; i++)
{
Vector3 from = points[i];
Vector3 to = points[i + 1];
Handles.DrawLine(from, to);
//绘制方向箭头
Vector3 middle = (from + to) * 0.5f;
Vector3 v0 = from - to;
v0 *= 2 / v0.magnitude;
Vector3 v1 = new Vector3(v0.x * 0.866f - v0.z * 0.5f, v0.y * 0.866f, v0.x * 0.5f + v0.z * 0.866f);
Vector3 v2 = new Vector3(v0.x * 0.866f + v0.z * 0.5f, v0.y * 0.866f, v0.x * -0.5f + v0.z * 0.866f);
Handles.DrawAAPolyLine(3, middle + v1, middle, middle + v2);
}
}
}