value | The value the user can modify. |
position | The position of the handle. |
rotation | The rotation of the handle. |
size | The size of the handle. |
capFunc | The function to use for drawing the handle (e.g. Handles.RectangleCap). |
snap | The new value after the user has modified it. |
float The new value modified by the user's interaction with the handle. If the user has not moved the handle, it will return the same value as you passed into the function.
Make a single-float draggable handle.
This is used to make the center scale handle. The user can click and drag to scale a single float up and down.
Scale Value handle in the Scene view with an arrow cap as the handle.
Note: Use HandleUtility.GetHandleSize if you want the handle to always remain the same size on the screen.
// Name this script "ScaleValueEditor" using UnityEngine; using UnityEditor;
[CustomEditor(typeof(ScaleValue))] [CanEditMultipleObjects] public class ScaleValueEditor : Editor { public void OnSceneGUI() { ScaleValue t = (target as ScaleValue);
EditorGUI.BeginChangeCheck(); float scale = Handles.ScaleValueHandle(t.scale, Vector3.zero, Quaternion.identity,3,Handles.CircleCap,.5f); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Scale Value"); t.scale = scale; t.Update(); } } }
And attach this script to the Handle:
// Name this script "ScaleValue" using UnityEngine;
[ExecuteInEditMode] public class ScaleValue : MonoBehaviour { public float scale = 0.5f; public void Update() { GetComponent<Renderer>().sharedMaterial.color = Color.Lerp(Color.red, Color.green, scale); } }