42 lines
1009 B
C#
42 lines
1009 B
C#
|
using System;
|
|||
|
using UnityEngine;
|
|||
|
#if UNITY_EDITOR
|
|||
|
using UnityEditor;
|
|||
|
#endif
|
|||
|
|
|||
|
namespace Obi{
|
|||
|
|
|||
|
[System.AttributeUsage(System.AttributeTargets.Field)]
|
|||
|
public class MinMaxAttribute : MultiPropertyAttribute
|
|||
|
{
|
|||
|
float min;
|
|||
|
float max;
|
|||
|
public MinMaxAttribute(float min, float max)
|
|||
|
{
|
|||
|
this.min = min;
|
|||
|
this.max = max;
|
|||
|
}
|
|||
|
#if UNITY_EDITOR
|
|||
|
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
|
|||
|
{
|
|||
|
if (property.propertyType == SerializedPropertyType.Vector2){
|
|||
|
float minValue = property.vector2Value.x;
|
|||
|
float maxValue = property.vector2Value.y;
|
|||
|
|
|||
|
EditorGUI.MinMaxSlider(position, label, ref minValue, ref maxValue, min, max);
|
|||
|
|
|||
|
var vec = Vector2.zero;
|
|||
|
vec.x = minValue;
|
|||
|
vec.y = maxValue;
|
|||
|
|
|||
|
property.vector2Value = vec;
|
|||
|
}else{
|
|||
|
EditorGUI.LabelField(position, label.text, "Use MinMaxAttribute with Vector2.");
|
|||
|
}
|
|||
|
}
|
|||
|
#endif
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|