版本:Unity 6 (6000.0)
语言英语
  • C#

EditorGUILayout.Vector3Field

提出变更建议

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交内容,但我们会阅读用户提出的每个变更建议,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,无法提交您的变更建议。请在几分钟内再<a>尝试</a>一次。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static Vector3 Vector3Field(string label, Vector3 value, params GUILayoutOption[] options);

声明

public static Vector3 Vector3Field(GUIContent label, Vector3 value, params GUILayoutOption[] options);

参数

label 在字段上方显示的标签。
value 要编辑的值。
options 指定额外布局属性的布局选项可选列表。此处传入的任何值都将覆盖 style 定义的设置。
其他资源: GUILayout.WidthGUILayout.HeightGUILayout.MinWidthGUILayout.MaxWidthGUILayout.MinHeightGUILayout.MaxHeightGUILayout.ExpandWidthGUILayout.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(); } }