position | @param position Позиция текущей точки. |
direction | @param direction Направление скольжения. |
size | @param size Размер маркера. |
drawFunc | @param drawFunc Функция, вызываемая для действующего отображения - по умолчанию, Handles.ArrowCap, могут использоваться функции с такой же сигнатурой. |
snap | @param snap Значение "захвата" (см. Handles.SnapValue). |
Vector3 @return Новую позицию. Если пользователь не выполнил операцию, будет возвращено то же значение, что вы передавали в позицию.
Делает 3D слайдер.
Важно: Используйте HandleUtility.GetHandleSize если вам нужны маркеры постоянного размера.
На экране будет отображен перетаскиваемый маркер. Маркер вынужден скользить на плоскости.
"Маркер слайдера в окне Scene".
// Name this script "SliderHandleEditor" using UnityEngine; using System.Collections; using UnityEditor;
[CustomEditor(typeof(SliderHandle))] public class SliderHandleEditor : Editor {
// Simple script that creates a Slide Handle that // allows you to drag a 'look at' point along the X axis
void OnSceneGUI() {
SliderLook t = (target as SliderLook); EditorGUI.BeginChangeCheck(); Vector3 lookTarget = Handles.Slider(t.lookTarget, new Vector3(1, 0, 0), 2, Handles.ConeCap, 0.1f); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Changed Slider Look Target"); t.lookTarget = lookTarget; t.Update(); } }
}
И скрипт, прикрепленный к данному маркеру:
// Name this script "SliderHandle" using UnityEngine; using System.Collections;
[ExecuteInEditMode] public class SliderHandle : MonoBehaviour { public Vector3 lookTarget = new Vector3(0,0,0); public void Update() { transform.LookAt(lookTarget); }
}