scale | 用户可以修改的值。 |
position | 句柄在 Handles.matrix 空间中的位置。 |
direction | 句柄在 Handles.matrix 空间中的方向。 |
rotation | 句柄在 Handles.matrix 空间中的旋转。 |
size | 句柄在 Handles.matrix 空间中的大小。如果您想要恒定的屏幕空间大小,请使用 HandleUtility.GetHandleSize。 |
snap | 捕捉增量。请参阅 Handles.SnapValue。 |
id | 句柄的控件 ID。 |
float 用户与句柄交互修改后的新值。如果用户没有移动句柄,则将返回与传递给函数的值相同的值。
创建方向缩放滑块。
此方法将在屏幕上绘制一个 3D 可拖动的句柄,看起来像是 Unity 内置缩放工具上的一个轴。句柄将伸展并上下缩放单个浮点数。
场景视图中的缩放滑块句柄。
将以下脚本添加到您的 Assets 文件夹中,命名为 ScaleSliderExample.cs,并将 ScaleSliderExample 组件添加到场景中的对象。
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(); } } }