Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Handles.ScaleValueHandle

Объявление

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

Параметры

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

Возвращает

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

Описание

Создаёт 3D-манипулятор, который масштабирует один плавающий элемент.

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

Маркер значения масштаба в представлении «Сцена» со стрелкой в качестве маркера

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

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 LightColor Interpolation"); colorLerp.amount = newAmount; colorLerp.Update(); } } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3