Handles.Slider2D
Declaration
public static Vector3 Slider2D(int id, Vector3 handlePos, Vector3 offset, Vector3 handleDir, Vector3 slideDir1, Vector3 slideDir2, float handleSize, Handles.CapFunction capFunction, Vector2 snap, bool drawHelper = false);public static Vector3 Slider2D(Vector3 handlePos, Vector3 handleDir, Vector3 slideDir1, Vector3 slideDir2, float handleSize, Handles.CapFunction capFunction, float snap, bool drawHelper = false);public static Vector3 Slider2D(int id, Vector3 handlePos, Vector3 handleDir, Vector3 slideDir1, Vector3 slideDir2, float handleSize, Handles.CapFunction capFunction, Vector2 snap, bool drawHelper = false);public static Vector3 Slider2D(Vector3 handlePos, Vector3 handleDir, Vector3 slideDir1, Vector3 slideDir2, float handleSize, Handles.CapFunction capFunction, Vector2 snap, bool drawHelper = false);Параметры
| Параметр | Описание |
|---|---|
| Идентификатор | (необязательно) переопределяет ControlID по умолчанию для этого экземпляра Slider2D. |
| handlePos | Положение текущей точки в пространстве Handles.matrix. |
| офсет | (необязательно) отображает Slider2D в handlePos, но рассматривает начало Slider2D как handlePos + смещение. Полезно для экземпляров Slider2D, которые размещены/отображены относительно другого объекта или handle. |
| handleDir | Направление ручки в пространстве Handles.matrix, используется только для отображения ручки. |
| slideDir1 | Первая ось плоскости движения слайдера в пространстве Handles.matrix. |
| slideDir2 | Вторая ось плоскости движения слайдера в пространстве Handles.matrix. |
| handleSize | Размер ручки в пространстве Handles.matrix. Используйте HandleUtility.GetHandleSize, если требуется постоянный размер экранного пространства. |
| взлом | (float или Vector2) Увеличение по обеим осям, либо равномерное, либо по осям. См. Handles.SnapValue. |
| drawHelper | (по умолчанию: false) отображать прямоугольник вокруг ручки при перетаскивании. |
| capFunction | Функция для вызова для выполнения фактического рисунка. |
Возвращаемое значение
Vector3 Новое значение, измененное взаимодействием пользователя с ручкой. Если пользователь не перемещает ручку, то она возвращает значение позиции, переданное функции.
Описание
Создайте ползунок 3D, который движется вдоль плоскости, определенной двумя осями.
Этот метод нарисует 3D-перетаскиваемую ручку на экране. Ручка ограничена скольжением по плоскости в пространстве 3D.

2D ручка ползунка в представлении Scene.
Добавление следующего скрипта в папку Assets как Slider2DExample.cs и добавление компонента Slider2DExample к объекту в Scene.
using UnityEngine;
[ExecuteInEditMode] public class Slider2DExample : 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 как Slider2DExampleEditor.cs и выберите объект с компонентом Slider2DExample.
using UnityEditor; using UnityEngine;
[CustomEditor(typeof(Slider2DExample)), CanEditMultipleObjects] public class Slider2DExampleEditor : Editor { protected virtual void OnSceneGUI() { Slider2DExample example = (Slider2DExample)target;
float size = HandleUtility.GetHandleSize(example.targetPosition) * 0.5f; float snap = 0.1f; Vector3 handleDirection = Vector3.up;
EditorGUI.BeginChangeCheck(); Vector3 newTargetPosition = Handles.Slider2D(example.targetPosition, handleDirection, Vector3.right, Vector3.forward, size, Handles.CircleHandleCap, snap); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(example, "Change Look At Target Position"); example.targetPosition = newTargetPosition; example.Update(); } } }