Version: 5.5

Handles.ScaleValueHandle

Switch to Manual
public static float ScaleValueHandle (float value, Vector3 position, Quaternion rotation, float size, Handles.DrawCapFunction capFunc, float snap);

Parameters

value @param scale Значение, которое пользователь может изменять.
position @param position Позиция маркера.
rotation @param rotation Вращение маркера.
size @param size Размер маркера.
capFunc Функция, использующаяся для отображения маркера, Handles.RectangleCap.
snap @param snap Новое значение, после того как пользователь изменил его.

Returns

float @return Новую позицию. Если пользователь не выполнил операцию, будет возвращено то же значение, что вы передавали в позицию.

Description

Делает "плавающий" перетаскиваемый маркер.

Используется чтобы получить центр масштаба маркера. Пользователь может кликать и перетаскивать, чтобы масштабировать поплавок вверх и вниз.


Scale Value handle in the Scene view with an arrow cap as the handle.

Важно: Используйте HandleUtility.GetHandleSize если вам нужны маркеры постоянного размера.

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

И скрипт, прикрепленный к данному маркеру:

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