Files
aibis-dream/Assets/Scripts/UI/Form/SliderItem.cs
T
dingyuntian 7bd0ac998e 区域性调整
解决在德语法语等区设置不可用的问题
2025-09-16 17:18:46 +08:00

50 lines
1.4 KiB
C#

using System;
using System.Globalization;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace AibisDream
{
public class SliderItem : AbsFormItem
{
public override FieldType FieldType => FieldType.Slider;
#region 索引
private Slider _slider;
private TMP_Text _sliderText;
#endregion
protected override void InitField()
{
// 初始化索引
_slider = GetComponentInChildren<Slider>();
_sliderText = _slider.GetComponentInChildren<TMP_Text>(true);
// 绑定事件
_slider.onValueChanged.AddListener(OnSliderChanged);
}
private void OnSliderChanged(float value)
{
// 更新数字显示
_sliderText.text = Mathf.RoundToInt(value * 100).ToString();
// 触发修改事件
OnValueChanged.Invoke(prop, value.ToString("F2"));
}
public override void SetValue(string value)
{
if (float.TryParse(value, NumberStyles.Float, CultureInfo.InvariantCulture, out var floatValue))
{
_slider.value = floatValue;
_sliderText.text = Mathf.RoundToInt(floatValue * 100).ToString();
}
else
{
Debug.LogError($"SliderItem: 解析数值{value}失败");
}
}
}
}