Параметры
position | Центр ручки в трехмерном пространстве. |
rotation | Ориентация ручки в 3D пространстве. |
Возвращает
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 TargetPosition");
example.targetPosition = newTargetPosition;
example.Update();
}
}
}