51 lines
1.2 KiB
C#
51 lines
1.2 KiB
C#
using UnityEngine;
|
|
|
|
namespace AibisDream
|
|
{
|
|
public class SettingForm : MonoBehaviour, IUIForm
|
|
{
|
|
#region 索引
|
|
|
|
private AbsFormItem[] _formItems;
|
|
|
|
#endregion
|
|
|
|
public void Init()
|
|
{
|
|
// 获取索引
|
|
_formItems = GetComponentsInChildren<AbsFormItem>();
|
|
UpdateForm();
|
|
// 绑定变化
|
|
foreach (var formItem in _formItems)
|
|
{
|
|
formItem.OnValueChanged.AddListener(OnItemChanged);
|
|
}
|
|
}
|
|
|
|
public void UnInit()
|
|
{
|
|
// 绑定变化
|
|
foreach (var formItem in _formItems)
|
|
{
|
|
formItem.OnValueChanged.RemoveAllListeners();
|
|
}
|
|
}
|
|
|
|
public void OnItemChanged(string propName, string value)
|
|
{
|
|
SettingLoader.Instance.Write(propName, value);
|
|
}
|
|
|
|
public void UpdateForm()
|
|
{
|
|
var settingDict = SettingLoader.Instance.ReadAll();
|
|
foreach (var formItem in _formItems)
|
|
{
|
|
if (settingDict.TryGetValue(formItem.prop, out var value))
|
|
{
|
|
formItem.SetValue(value);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |