value | @param scale Значение, которое пользователь может изменять. |
position | @param position Позиция маркера. |
rotation | @param rotation Вращение маркера. |
size | @param size Размер маркера. |
capFunc | Функция, использующаяся для отображения маркера, Handles.RectangleCap. |
snap | @param snap Новое значение, после того как пользователь изменил его. |
float @return Новую позицию. Если пользователь не выполнил операцию, будет возвращено то же значение, что вы передавали в позицию.
Делает "плавающий" перетаскиваемый маркер.
Используется чтобы получить центр масштаба маркера. Пользователь может кликать и перетаскивать, чтобы масштабировать поплавок вверх и вниз.
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); } }