scale | 用户可以修改的值。 |
position | Handles.matrix 空间中手柄的位置。 |
direction | Handles.matrix 空间中手柄的方向。 |
rotation | Handles.matrix 空间中手柄的旋转。 |
size | Handles.matrix 空间中手柄的大小。如果您想要一个恒定的屏幕空间大小,请使用 HandleUtility.GetHandleSize。 |
snap | 贴靠增量。请参阅 Handles.SnapValue。 |
id | The control ID of the handle. |
float 通过用户与手柄的交互修改的新值。如果用户没有移动手柄,则将返回您传递给相应函数的值。
创建一个定向缩放滑动条。
此方法将会在屏幕上绘制一个可拖动的 3D 手柄,外观类似于 Unity 的内置缩放工具上的一个轴。该手柄将会上下拉伸和缩放单个浮点。\
\
\
场景视图中的缩放滑动条手柄。
将以下脚本作为 ScaleSliderExample.cs 添加到 Assets 文件夹,然后将 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); } }
将以下脚本作为 ScaleSliderExampleEditor.cs 添加到 Assets/Editor,然后选择包含 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(); } } }