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

Ручка скольжения в представлении Scene.
Добавьте следующий скрипт в папку Assets как SliderExample.cs и добавьте компонент SliderExample к объекту в Scene.
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 Target Position"); example.targetPosition = newTargetPosition; example.Update(); } } }