Version: 5.5

Handles.RotationHandle

Switch to Manual
public static Quaternion RotationHandle (Quaternion rotation, Vector3 position);

Parameters

rotation @param rotation ориентация маркера.
position @param position Центр маркера в 3D пространстве.

Returns

Quaternion The new rotation value modified by the user's interaction with the handle. If the user has not moved the handle, it returns the same value that you passed into the function.

Description

Назначает вращение маркера в окне Scene.

Поведение схоже со встроенным инструментом "rotation" в Unity. Если назначите что либо в Undo.SetSnapshotTarget, оно будет работоспособным до "Undo".


Rotate the attached object from the Rotation Handle.

Важно: Используйте HandleUtility.GetHandleSize если вам нужны маркеры постоянного размера.

// Name this script "RotateAtPointEditor"
using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(RotateAtPoint))] [CanEditMultipleObjects] public class RotateAtPointEditor : Editor { public void OnSceneGUI() { RotateAtPoint t = (target as RotateAtPoint);

EditorGUI.BeginChangeCheck(); Quaternion rot = Handles.RotationHandle(t.rot, Vector3.zero); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Rotated RotateAt Point"); t.rot = rot; t.Update(); } } }

Скрипт, прикрепленный к маркеру:

// Name this script "RotateAtPoint"
using UnityEngine;

[ExecuteInEditMode] public class RotateAtPoint : MonoBehaviour { public Quaternion rot = Quaternion.identity; public void Update() { transform.rotation = rot; } }