position | @param position Позиция маркера. |
rotation | @param rotation Вращение маркера. |
size | @param size Размер маркера. |
capFunc | Функция, использующаяся для отображения маркера, Handles.RectangleCap. |
snap | The grid size to snap movement to. |
Vector3 @return Новую позицию. Если пользователь не выполнил операцию, будет возвращено то же значение, что вы передавали в позицию.
Делает неограниченно движущийся маркер.
Может передвигаться свободно во всех направлениях. Удерживайте CMD для захвата, CMD-SHIFT для выпускания луча в коллайдеры на сцене.
Free Move handle in the Scene View.
Важно: Используйте HandleUtility.GetHandleSize если вам нужны маркеры постоянного размера.
// Name this script "FreeMoveEditor" using UnityEngine; using UnityEditor;
[CustomEditor(typeof(FreeMove))] [CanEditMultipleObjects] public class FreeMoveEditor : Editor { public void OnSceneGUI() { FreeMove t = (target as FreeMove);
EditorGUI.BeginChangeCheck(); Vector3 pos = Handles.FreeMoveHandle(t.lookAtPoint, Quaternion.identity, .5f, new Vector3(.5f, .5f, .5f), Handles.RectangleCap); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Free Move LookAt Point"); t.lookAtPoint = pos; t.Update(); } } }
И скрипт, прикрепленный к данному маркеру:
// Name this script "FreeMove" using UnityEngine;
[ExecuteInEditMode] public class FreeMove : MonoBehaviour { public Vector3 lookAtPoint = Vector3.zero;
public void Update() { transform.LookAt(lookAtPoint); } }