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

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