Files
ichni_Creator_Studio/Assets/Scripts/DynamicUI/Drawers/SliderDrawer.cs
SoulliesOfficial 5fc1392747 新Head
2026-06-09 01:43:55 -04:00

34 lines
1.1 KiB
C#

using Ichni.RhythmGame;
using Lean.Pool;
using UnityEngine;
using UnityEngine.UI;
namespace Ichni.Editor
{
/// <summary>
/// 处理带 [InspectorSlider] 属性的 float/int 类型的 Drawer。
/// 创建 DynamicUISlider 并配置范围参数。
/// </summary>
public class SliderDrawer : IPropertyDrawer
{
public int DefaultSpan => 3;
public float DefaultHeight => LayoutPacker.DefaultRowHeight;
public DynamicUIElement Draw(DrawContext ctx)
{
var go = LeanPool.Spawn(ctx.Registry.GetPrefab("slider"), ctx.Parent);
var element = go.GetComponent<DynamicUISlider>();
element.Initialize(ctx.Target, ctx.Label, ctx.FieldName,
ctx.SliderMin, ctx.SliderMax, ctx.SliderWholeNumbers);
DynamicUIElement.DisableNavigation(element.slider);
int span = ctx.OverrideSpan ?? DefaultSpan;
float height = ctx.OverrideHeight ?? DefaultHeight;
element.SetLayoutSize(span * LayoutPacker.TotalRowWidth / LayoutPacker.MaxSpanPerRow, height);
return element;
}
}
}