Handles.ScaleSlider
Declaration
public static float ScaleSlider(float scale, Vector3 position, Vector3 direction, Quaternion rotation, float size, float snap);public static float ScaleSlider(int id, float scale, Vector3 position, Vector3 direction, Quaternion rotation, float size, float snap);Параметры
| Параметр | Описание |
|---|---|
| шкала | Значение, которое пользователь может изменить. |
| должность | Положение ручки в пространстве Handles.matrix. |
| направление | Направление ручки в пространстве Handles.matrix. |
| ротация | Вращение ручки в пространстве Handles.matrix. |
| размер | Размер ручки в пространстве Handles.matrix. Используйте HandleUtility.GetHandleSize, если требуется постоянный размер экранного пространства. |
| взлом | Увеличение фиксации. См. Handles.SnapValue. |
| Идентификатор | Управление ID ручки. |
Возвращаемое значение
поплавок Новое значение, изменённое взаимодействием пользователя с handle. Если пользователь не переместил handle, то оно возвратит то же значение, которое вы передали функции.
Описание
Сделать направленный масштаб ползунок.
Этот метод нарисует 3D-перетаскиваемую ручку на экране, которая выглядит как одна ось на встроенном инструменте масштабирования Unity. Ручка будет растягиваться и масштабировать один плавающий вверх и вниз.

Масштабировать ползунок в представлении Scene.
Добавить следующий скрипт в папку Assets как ScaleSliderExample.cs и добавить компонент ScaleSliderExample к объекту в Scene.
using UnityEngine;
[ExecuteInEditMode] public class ScaleSliderExample : MonoBehaviour { public float scale { get { return m_Scale; } set { m_Scale = value; } } [SerializeField] private float m_Scale = 1f;
public virtual void Update() { transform.localScale = new Vector3(scale, 1f, 1f); } }
Добавьте следующий скрипт в Assets/Editor как ScaleSliderExampleEditor.cs и выберите объект с компонентом ScaleSliderExample.
using UnityEditor; using UnityEngine;
[CustomEditor(typeof(ScaleSliderExample)), CanEditMultipleObjects] public class ScaleSliderExampleEditor : Editor { public void OnSceneGUI() { ScaleSliderExample example = (ScaleSliderExample)target;
float size = HandleUtility.GetHandleSize(example.transform.position) * 1f; float snap = 0.5f;
EditorGUI.BeginChangeCheck(); float scale = Handles.ScaleSlider(example.scale, example.transform.position, example.transform.right, example.transform.rotation, size, snap); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Change Scale Value"); example.scale = scale; example.Update(); } } }