Unity 6.3
0 онлайн 13 гостей 3 в системе
Вход

Handles.PositionHandle

Declaration

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

Параметры

Параметр Описание
должность Центр ручки в пространстве 3D.
ротация Ориентация ручки в 3D пространстве.
Идентификационные номера Управление IDs ручек. Используйте PositionHandleIds.default.

Возвращаемое значение

Vector3 Новое значение, изменённое взаимодействием пользователя с handle. Если пользователь не переместил handle, то оно возвратит то же значение, которое вы передали функции.

Описание

Сделайте позиционную ручку.

Этот манипулятор ведет себя как встроенный инструмент перемещения в Unity.


Манипулятор позиционирования в представлении Scene.''

Добавьте следующий скрипт в папку Assets как PositionHandleExample.cs и добавьте компонент PositionHandleExample к объекту в Scene.

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(); } } }