50 lines
1.4 KiB
C#
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}失败");
|
|
}
|
|
}
|
|
}
|
|
} |