unity3D在Scene视图中增加一个全局坐标系的辅助元素 三个轴分别用红绿蓝三根直线表示,尾端加一个立方体 创建一个自定义菜单用于显示和隐藏全局坐标系
时间: 2023-04-04 14:00:57 浏览: 93
可以通过以下代码实现:
using UnityEditor;
using UnityEngine;
public class CoordinateSystem : EditorWindow
{
private static bool showCoordinateSystem = true;
[MenuItem("Tools/Show Coordinate System")]
private static void ToggleCoordinateSystem()
{
showCoordinateSystem = !showCoordinateSystem;
SceneView.RepaintAll();
}
private void OnGUI()
{
GUILayout.Label("Global Coordinate System", EditorStyles.boldLabel);
Handles.color = Color.red;
Handles.DrawLine(Vector3.zero, Vector3.right * 10f);
Handles.color = Color.green;
Handles.DrawLine(Vector3.zero, Vector3.up * 10f);
Handles.color = Color.blue;
Handles.DrawLine(Vector3.zero, Vector3.forward * 10f);
Handles.color = Color.white;
Handles.CubeHandleCap(, Vector3.zero, Quaternion.identity, 1f, EventType.Repaint);
Repaint();
}
[DrawGizmo(GizmoType.Active | GizmoType.Selected)]
private static void DrawGizmo(Transform transform, GizmoType gizmoType)
{
if (showCoordinateSystem)
{
Handles.color = Color.red;
Handles.DrawLine(transform.position, transform.position + transform.right * 2f);
Handles.color = Color.green;
Handles.DrawLine(transform.position, transform.position + transform.up * 2f);
Handles.color = Color.blue;
Handles.DrawLine(transform.position, transform.position + transform.forward * 2f);
Handles.color = Color.white;
Handles.CubeHandleCap(, transform.position, Quaternion.identity, .1f, EventType.Repaint);
}
}
}
这段代码会在 Unity 编辑器中创建一个自定义菜单,点击菜单可以显示或隐藏全局坐标系。在 Scene 视图中,会显示红绿蓝三根直线和一个立方体,表示全局坐标系。同时,当选中一个物体时,会在其位置处显示一个局部坐标系。