rotation | @param rotation ориентация маркера. |
position | @param position Центр маркера в 3D пространстве. |
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.
Назначает вращение маркера в окне 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; } }