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

Handles.Slider

建议修改

成功!

感谢您帮助我们提升 Unity 文档的质量。尽管我们可能无法接受所有提交,我们仍会阅读用户建议的每个修改,并在适用的情况下进行更新。

关闭

提交失败

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

关闭

取消

声明

public static Vector3 Slider(Vector3 position, Vector3 direction);

声明

public static Vector3 Slider(Vector3 position, Vector3 direction, float size, Handles.CapFunction capFunction, float snap);

参数

position Handles.matrix 空间中当前点的坐标。
direction Handles.matrix 空间中滑块的轴线方向。
size Handles.matrix 空间中控制柄的大小。如果您希望设定一个恒定的屏幕空间大小,请使用 HandleUtility.GetHandleSize
snap 对齐增量。请参阅 Handles.SnapValue
capFunction 进行实际绘制时要调用的函数。默认情况下为 Handles.ArrowHandleCap,但可以采用具有相同签名的任意函数。

返回

Vector3 用户与控制柄互动的修改过的值。如果用户没有移动控制柄,它将返回传递到该函数中的位置值。

描述

制作沿一个轴线移动的 3D 滑块。

该方法将在界面上绘制可 3D 拖动的控制柄。控制柄被限制在 3D 空间中的方向向量上滑动。


场景视图中的滑块控制柄。

将以下脚本以 SliderExample.cs 的名称添加至 Assets 文件夹,并将 SliderExample 组件添加到场景中的某一物体。

using UnityEngine;

[ExecuteInEditMode] public class SliderExample : MonoBehaviour { public Vector3 targetPosition { get { return m_TargetPosition; } set { m_TargetPosition = value; } } [SerializeField] private Vector3 m_TargetPosition = new Vector3(1f, 0f, 2f);

public virtual void Update() { transform.LookAt(m_TargetPosition); } }

将以下脚本以 SliderExampleEditor.cs 的名称添加至 Assets/Editor,然后选择包含 SliderExample 组件的物体。

using UnityEditor;
using UnityEngine;

[CustomEditor(typeof(SliderExample)), CanEditMultipleObjects] public class SliderExampleEditor : Editor { protected virtual void OnSceneGUI() { SliderExample example = (SliderExample)target;

float size = HandleUtility.GetHandleSize(example.targetPosition) * 0.5f; float snap = 0.1f;

EditorGUI.BeginChangeCheck(); Vector3 newTargetPosition = Handles.Slider(example.targetPosition, Vector3.right, size, Handles.ConeHandleCap, snap); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(example, "Change Look At Target Position"); example.targetPosition = newTargetPosition; example.Update(); } } }