94 lines
2.6 KiB
C#
94 lines
2.6 KiB
C#
// 本脚本只在不存在时会生成一次。已存在不会再次生成覆盖
|
|
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using NBC;
|
|
using Unity.VisualScripting;
|
|
|
|
namespace NBF
|
|
{
|
|
public partial class SettingPanel : UIPanel
|
|
{
|
|
public override string UIPackName => "Main";
|
|
public override string UIResName => "SettingPanel";
|
|
|
|
private List<TabListSettingData> tabList = new List<TabListSettingData>();
|
|
|
|
private object _currentSettingsObject;
|
|
|
|
protected override void OnInit()
|
|
{
|
|
base.OnInit();
|
|
IsShowCursor = true;
|
|
|
|
TabListSettingData tabInput = new TabListSettingData();
|
|
tabInput.Tab = new TabItemData();
|
|
tabInput.Tab.Name = "键盘和鼠标";
|
|
tabList.Add(tabInput);
|
|
|
|
TabListSettingData tabCtrl = new TabListSettingData();
|
|
tabCtrl.Tab = new TabItemData();
|
|
tabCtrl.Tab.Name = "控制器";
|
|
tabList.Add(tabCtrl);
|
|
|
|
TabListSettingData tabVideo = new TabListSettingData();
|
|
tabVideo.Tab = new TabItemData();
|
|
tabVideo.Tab.Name = "视频";
|
|
tabVideo.SettingsObject = GameSettings.Instance.UseSettings;
|
|
tabList.Add(tabVideo);
|
|
|
|
TabListSettingData tabSound = new TabListSettingData();
|
|
tabSound.Tab = new TabItemData();
|
|
tabSound.Tab.Name = "音频和语言";
|
|
tabList.Add(tabSound);
|
|
|
|
Menu.OnTabChange += ChangeTab;
|
|
}
|
|
|
|
protected override void OnShow()
|
|
{
|
|
Menu.SetTabs(tabList);
|
|
}
|
|
|
|
private void ChangeTab(int index)
|
|
{
|
|
Log.Info($"Change tab index={index}");
|
|
var tabListData = tabList[index];
|
|
_currentSettingsObject = tabListData.SettingsObject;
|
|
ResetSettingList();
|
|
}
|
|
|
|
|
|
private void ResetSettingList()
|
|
{
|
|
List.RemoveChildrenToPool();
|
|
if (_currentSettingsObject == null) return;
|
|
var fields = _currentSettingsObject.GetType().GetFields();
|
|
foreach (var field in fields)
|
|
{
|
|
if (List.AddItemFromPool() is SettingItem item)
|
|
{
|
|
item.SetData(field, _currentSettingsObject);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void Reset()
|
|
{
|
|
}
|
|
|
|
private void Save()
|
|
{
|
|
}
|
|
|
|
protected override void OnHide()
|
|
{
|
|
base.OnHide();
|
|
}
|
|
|
|
protected override void OnDestroy()
|
|
{
|
|
base.OnDestroy();
|
|
}
|
|
}
|
|
} |