Объявление
public static Vector3 Slider(Vector3 position, Vector3 direction);public static Vector3 Slider(Vector3 position, Vector3 direction, float size, Handles.CapFunction capFunction, float snap);
Параметры
position | Положение текущей точки в пространстве Handles.matrix. |
direction | Направление оси ползунка в пространстве Handles.matrix. |
size | Размер дескриптора в пространстве Handles.matrix. Используйте HandleUtility.GetHandleSize, если вам нужен постоянный размер экранного пространства. |
snap | Шаг привязки. См. раздел Handles.SnapValue. |
capFunction | Функция для вызова фактического рисования. По умолчанию это Handles.ArrowHandleCap, но можно использовать любую функцию с такой же сигнатурой. |
Возвращает
Vector3 Новое значение, измененное взаимодействием пользователя с дескриптором. Если пользователь не перемещал дескриптор, он вернет значение позиции, переданное в функцию.
Описание
Создайте 3D-ползунок, который перемещается вдоль одной оси.
Этот метод рисует на экране 3D-манипулятор, который можно перетаскивать. Ручка ограничена перемещением вдоль вектора направления в трехмерном пространстве.

Добавьте следующий скрипт в папку Assets как SliderExample.cs и добавьте компонент SliderExample к объекту в сцене.
using UnityEngine;
[ExecuteInEditMode]
public class SliderExample : 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 как SliderExampleEditor.cs и выберите объект с компонентом SliderExample.
using UnityEditor;
using UnityEngine;
[CustomEditor(typeof(SliderExample)), CanEditMultipleObjects]
public class SliderExampleEditor : Editor
{
protected virtual void OnSceneGUI()
{
SliderExample example = (SliderExample)target;
float size = HandleUtility.GetHandleSize(example.targetPosition) * 0.5f;
float snap = 0.1f;
EditorGUI.BeginChangeCheck();
Vector3 newTargetPosition = Handles.Slider(example.targetPosition, Vector3.right, size, Handles.ConeHandleCap, snap);
if (EditorGUI.EndChangeCheck())
{
Undo.RecordObject(example, "Change Look At TargetPosition");
example.targetPosition = newTargetPosition;
example.Update();
}
}
}