Unity 6.3
0 онлайн 83 гостей 3 в системе
Вход

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(); } } }