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

Handles.ScaleValueHandle

Declaration

public static float ScaleValueHandle(float value, Vector3 position, Quaternion rotation, float size, Handles.CapFunction capFunction, float snap);

Параметры

Параметр Описание
значение Значение, которое пользователь может изменить.
должность Положение ручки в пространстве Handles.matrix.
ротация Вращение ручки в пространстве Handles.matrix.
размер Размер ручки в пространстве Handles.matrix. Используйте HandleUtility.GetHandleSize, если требуется постоянный размер экранного пространства.
взлом Увеличение фиксации. См. Handles.SnapValue.
capFunction Функция для вызова для выполнения фактического рисунка.

Возвращаемое значение

поплавок Новое значение, изменённое взаимодействием пользователя с handle. Если пользователь не переместил handle, то оно возвратит то же значение, которое вы передали функции.

Описание

Создайте 3D handle, который масштабирует одиночный float.

Этот метод нарисует на экране перетаскиваемую ручку 3D. Ручка не перемещается и будет масштабироваться вверх и вниз на один плавающий знак.


Масштабировать ручку значения в представлении Scene со стрелкой в качестве ручки.

Добавьте следующий скрипт в папку Assets как LightColorLerp.cs и добавьте компонент LightColorLerp к объекту в Scene.

using UnityEngine;

[ExecuteInEditMode, RequireComponent(typeof(Light))] public class LightColorLerp : MonoBehaviour { [SerializeField] private Color m_Color1 = Color.red; [SerializeField] private Color m_Color2 = Color.green;

public float amount { get { return m_Amount; } set { m_Amount = Mathf.Clamp01(value); } } [SerializeField, Range(0f, 1f)] private float m_Amount = 1f;

private Light m_Light;

protected virtual void OnEnable() { m_Light = GetComponent<Light>(); }

public virtual void Update() { m_Light.color = Color.Lerp(m_Color1, m_Color2, m_Amount); } }

Добавьте следующий скрипт в Assets/Editor как LightColorLerpEditor.cs и выберите объект с компонентом LightColorLerp.

using UnityEditor;
using UnityEngine;

[CustomEditor(typeof(LightColorLerp)), CanEditMultipleObjects] public class LightColorLerpEditor : Editor { protected virtual void OnSceneGUI() { LightColorLerp colorLerp = (LightColorLerp)target;

float size = HandleUtility.GetHandleSize(colorLerp.transform.position) * 5f; float snap = 0.1f;

EditorGUI.BeginChangeCheck(); float newAmount = Handles.ScaleValueHandle(colorLerp.amount, colorLerp.transform.position, Quaternion.identity, size, Handles.ArrowHandleCap, snap); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(colorLerp, "Change Light Color Interpolation"); colorLerp.amount = newAmount; colorLerp.Update(); } } }