c1_unity/Assets/Editor/InspectorTools/UIImageSheetAnimationInspector.cs
2023-04-03 11:04:31 +08:00

98 lines
4.4 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
namespace BFEditor
{
[CustomEditor(typeof(UIImageSheetAnimation))]
public class UIImageSheetAnimationInspector : Editor
{
UIImageSheetAnimation helper;
float cacheWidth;
void OnEnable()
{
helper = target as UIImageSheetAnimation;
}
public override void OnInspectorGUI()
{
helper.loop = EditorGUILayout.Toggle("Loop", helper.loop);
helper.lifeTime = EditorGUILayout.FloatField("LifeTime", helper.lifeTime);
EditorGUILayout.BeginHorizontal();
EditorGUILayout.LabelField("Tiles");
cacheWidth = EditorGUIUtility.labelWidth;
EditorGUIUtility.labelWidth = 20;
helper.sizeX = EditorGUILayout.IntField("X", helper.sizeX);
helper.sizeY = EditorGUILayout.IntField("Y", helper.sizeY);
EditorGUIUtility.labelWidth = cacheWidth;
EditorGUILayout.EndHorizontal();
helper.animationMode = (UIImageSheetAnimation.AnimationType)EditorGUILayout.EnumPopup("Animation", helper.animationMode);
//Single Row
if (helper.animationMode == UIImageSheetAnimation.AnimationType.SingleRow)
{
helper.randomRow = EditorGUILayout.Toggle("Random Row", helper.randomRow);
//not random row
if (!helper.randomRow)
{
helper.row = EditorGUILayout.IntField("Row", helper.row);
}
}
//start frame
EditorGUILayout.BeginHorizontal();
EditorGUILayout.LabelField("Start Frame");
if (helper.startFrameMode == UIImageSheetAnimation.StartFrameType.Constant)
{
helper.startFrame = EditorGUILayout.FloatField(helper.startFrame);
}
if (helper.startFrameMode == UIImageSheetAnimation.StartFrameType.RandomBetweenTwoConstants)
{
helper.startFrameMin = EditorGUILayout.FloatField(helper.startFrameMin);
helper.startFrame = EditorGUILayout.FloatField(helper.startFrame);
}
helper.startFrameMode = (UIImageSheetAnimation.StartFrameType)EditorGUILayout.EnumPopup(helper.startFrameMode);
EditorGUILayout.EndHorizontal();
//time mode
helper.timeMode = (UIImageSheetAnimation.TimeType)EditorGUILayout.EnumPopup("Time Mode", helper.timeMode);
if (helper.timeMode == UIImageSheetAnimation.TimeType.LifeTime)
{
//frame over time mode
base.OnInspectorGUI();//直接使用默认的方式绘制minMaxCurve
helper.frameOverTime.curveMultiplier = helper.sizeX * helper.sizeY;
// EditorGUILayout.BeginHorizontal();
// EditorGUILayout.LabelField("Frame Over Time");
// if (helper.frameOverTimeMode == UIImageSheetAnimation.FrameOverTimeType.Constant)
// {
// helper.frameOverTimeValue = EditorGUILayout.FloatField(helper.frameOverTimeValue);
// }
// if (helper.frameOverTimeMode == UIImageSheetAnimation.FrameOverTimeType.Curve)
// {
// helper.frameOverTimeCurve = EditorGUILayout.CurveField(helper.frameOverTimeCurve);
// }
// if (helper.frameOverTimeMode == UIImageSheetAnimation.FrameOverTimeType.RandomBetweenTwoConstants)
// {
// helper.frameOverTimeValueMin = EditorGUILayout.FloatField(helper.frameOverTimeValueMin);
// helper.frameOverTimeValue = EditorGUILayout.FloatField(helper.frameOverTimeValue);
// }
// if (helper.frameOverTimeMode == UIImageSheetAnimation.FrameOverTimeType.RandomBetweenTwoCurves)
// {
// helper.frameOverTimeCurve = EditorGUILayout.CurveField(helper.frameOverTimeCurve);
// helper.frameOverTimeCurveMax = EditorGUILayout.CurveField(helper.frameOverTimeCurveMax);
// }
// helper.frameOverTimeMode = (UIImageSheetAnimation.FrameOverTimeType)EditorGUILayout.EnumPopup(helper.frameOverTimeMode);
// EditorGUILayout.EndHorizontal();
helper.cycles = EditorGUILayout.FloatField("Cycles", helper.cycles);
}
if (helper.timeMode == UIImageSheetAnimation.TimeType.FPS)
{
helper.FPS = EditorGUILayout.FloatField("FPS", helper.FPS);
}
}
}
}