114 lines
2.9 KiB
C#
114 lines
2.9 KiB
C#
// 本脚本只在不存在时会生成一次。组件逻辑写在当前脚本内。已存在不会再次生成覆盖
|
|
|
|
using System.IO;
|
|
using System.Reflection;
|
|
using UnityEngine;
|
|
using FairyGUI;
|
|
using NBC;
|
|
using NBF.Setting;
|
|
using Unity.VisualScripting;
|
|
|
|
namespace NBF
|
|
{
|
|
public partial class SettingItem : GButton
|
|
{
|
|
public OptionBase Option;
|
|
|
|
private void OnInited()
|
|
{
|
|
BtnPrev.onClick.Set(OnPrev);
|
|
BtnNext.onClick.Set(OnNext);
|
|
Slider.onChanged.Set(OnSliderChanged);
|
|
}
|
|
|
|
public void SetData(OptionBase option)
|
|
{
|
|
Option = option;
|
|
|
|
if (option is IMultiOption multiOption)
|
|
{
|
|
style.selectedIndex = 0;
|
|
}
|
|
else if (option is RangeOption range)
|
|
{
|
|
style.selectedIndex = 1;
|
|
Slider.min = range.MinValue;
|
|
Slider.max = range.MaxValue;
|
|
Slider.wholeNumbers = true;
|
|
}
|
|
else if (option is RangeOptionFloat rangeOptionFloat)
|
|
{
|
|
style.selectedIndex = 1;
|
|
Slider.min = rangeOptionFloat.MinValue;
|
|
Slider.max = rangeOptionFloat.MaxValue;
|
|
Slider.wholeNumbers = false;
|
|
}
|
|
|
|
TextName.text = Lan.Get(Option.Name);
|
|
SetShow();
|
|
}
|
|
|
|
private void SetShow()
|
|
{
|
|
if (Option is IMultiOption multiOption)
|
|
{
|
|
// style.selectedIndex = 0;
|
|
TextInfo.text = multiOption.GetName();
|
|
}
|
|
// else if (option is RangeOption range)
|
|
// {
|
|
//
|
|
// }
|
|
// else if (option is RangeOptionFloat rangeOptionFloat)
|
|
// {
|
|
//
|
|
// }
|
|
}
|
|
|
|
public void OnPrev()
|
|
{
|
|
if (Option is IMultiOption multiOption)
|
|
{
|
|
var index = multiOption.GetIndex();
|
|
if (index > 0)
|
|
{
|
|
index--;
|
|
}
|
|
else if (index == 0)
|
|
{
|
|
var names = multiOption.GetOptionNames();
|
|
index = names.Count - 1;
|
|
}
|
|
|
|
multiOption.SetIndex(index);
|
|
}
|
|
|
|
SetShow();
|
|
}
|
|
|
|
public void OnNext()
|
|
{
|
|
if (Option is IMultiOption multiOption)
|
|
{
|
|
var names = multiOption.GetOptionNames();
|
|
var index = multiOption.GetIndex();
|
|
if (index < names.Count - 1)
|
|
{
|
|
index++;
|
|
}
|
|
else if (index == names.Count - 1)
|
|
{
|
|
index = 0;
|
|
}
|
|
|
|
multiOption.SetIndex(index);
|
|
}
|
|
|
|
SetShow();
|
|
}
|
|
|
|
public void OnSliderChanged()
|
|
{
|
|
}
|
|
}
|
|
} |