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

Handles.PositionHandle

建议更改

成功!

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

关闭

提交失败

由于某些原因,您的更改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static Vector3 PositionHandle(Vector3 position, Quaternion rotation);

声明

public static Vector3 PositionHandle(Handles.PositionHandleIds ids, Vector3 position, Quaternion rotation);

参数

position 句柄在 3D 空间中的中心。
rotation 句柄在 3D 空间中的方向。
ids 句柄的控制 ID。使用 PositionHandleIds.default。

返回值

Vector3 用户与句柄交互修改后的新值。如果用户没有移动句柄,它将返回与您传递给函数的值相同的值。

描述

创建一个位置句柄。

此句柄的行为类似于 Unity 中的内置移动工具。


场景视图中的位置句柄。''

将以下脚本添加到您的 Assets 文件夹中,作为 PositionHandleExample.cs,并将 PositionHandleExample 组件添加到场景中的某个对象中。

using UnityEngine;

[ExecuteInEditMode] public class PositionHandleExample : MonoBehaviour { public Vector3 targetPosition { get { return m_TargetPosition; } set { m_TargetPosition = value; } } [SerializeField] private Vector3 m_TargetPosition = new Vector3(1f, 0f, 2f);

public virtual void Update() { transform.LookAt(m_TargetPosition); } }

将以下脚本添加到 Assets/Editor 中,作为 PositionHandleExampleEditor.cs,然后选择具有 PositionHandleExample 组件的对象。

using UnityEditor;
using UnityEngine;

[CustomEditor(typeof(PositionHandleExample)), CanEditMultipleObjects] public class PositionHandleExampleEditor : Editor { protected virtual void OnSceneGUI() { PositionHandleExample example = (PositionHandleExample)target;

EditorGUI.BeginChangeCheck(); Vector3 newTargetPosition = Handles.PositionHandle(example.targetPosition, Quaternion.identity); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(example, "Change Look At Target Position"); example.targetPosition = newTargetPosition; example.Update(); } } }