版本:Unity 6(6000.0)
语言英语
  • C#

Handles.ScaleValueHandle

建议更改

成功!

感谢帮助我们提升 Unity 文档质量。尽管无法接受所有提交内容,但我们会仔细阅读用户建议的每一项更改,并在适用时进行更新。

关闭

提交失败

由于某些原因,无法提交您建议的更改。请在几分钟后再</a>重试。感谢您花时间帮助我们提升 Unity 文档质量。

关闭

取消

声明

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 Light Color Interpolation"); colorLerp.amount = newAmount; colorLerp.Update(); } } }