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

Handles.ScaleSlider

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每个建议更改,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static float ScaleSlider(float scale, Vector3 position, Vector3 direction, Quaternion rotation, float size, float snap);

声明

public static float ScaleSlider(int id, float scale, Vector3 position, Vector3 direction, Quaternion rotation, float size, float snap);

参数

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(); } } }