label | 在字段上方显示的标签。 |
value | 要编辑的值。 |
options | 指定额外布局属性的布局选项可选列表。此处传入的任何值都将覆盖 style 定义的设置。其他资源: GUILayout.Width、 GUILayout.Height、 GUILayout.MinWidth、 GUILayout.MaxWidth、 GUILayout.MinHeight、 GUILayout.MaxHeight、 GUILayout.ExpandWidth、 GUILayout.ExpandHeight。 |
Vector3 用户输入的值。
为输入 Vector3 创建 X、Y 和 Z 字段。
测量 3D 空间中 2 个游戏对象或 2 个位置之间的距离。
using UnityEditor; using UnityEngine;
public class EditorGUILayoutVector3Field : UnityEditor.EditorWindow { float distance = 0f; Vector3 obj1; Vector3 obj2;
[MenuItem("Examples/Measure Distance between 2 objects")] static void Init() { EditorGUILayoutVector3Field window = (EditorGUILayoutVector3Field)EditorWindow.GetWindow(typeof(EditorGUILayoutVector3Field), true, "My Empty Window"); window.Show(); }
void OnGUI() { GUILayout.Label("Select an object in the Hierarchy view and click 'Capture Position'"); EditorGUILayout.BeginHorizontal(); obj1 = EditorGUILayout.Vector3Field("GameObject 1:", obj1); if (GUILayout.Button("Capture Position")) obj1 = Selection.activeTransform.position; EditorGUILayout.EndHorizontal();
EditorGUILayout.BeginHorizontal(); obj2 = EditorGUILayout.Vector3Field("GameObject 2:", obj2); if (GUILayout.Button("Capture Position")) obj2 = Selection.activeTransform.position; EditorGUILayout.EndHorizontal(); EditorGUILayout.LabelField("Distance:", distance.ToString()); if (GUILayout.Button("Close")) this.Close(); }
void OnInspectorUpdate() { distance = Vector3.Distance(obj1, obj2); this.Repaint(); } }