引入 UISerializationRoot 和 Item

- 完成 MenuForm 和 SelectRoleForm 的迁移
This commit is contained in:
2026-09-13 22:18:29 +08:00
parent e2fdb660ab
commit 091a29db63
101 changed files with 5281 additions and 5753 deletions
@@ -0,0 +1,91 @@
using SepCore.Definition;
using SepCore.Event;
using UnityEngine.EventSystems;
using UnityGameFramework.Runtime;
namespace SepCore.UI
{
public partial class MenuForm
{
private bool _listenersBound;
public void RefreshUI(MenuContext context)
{
EnsureButtonListeners();
if (EventSystem.current.currentSelectedGameObject != View.startButton.gameObject)
{
EventSystem.current.SetSelectedGameObject(View.startButton.gameObject);
}
}
#region Lifecycle
protected override void OnOpen(object userData)
{
base.OnOpen(userData);
if (userData is not MenuContext context)
{
Log.Error("MenuForm requires MenuContext as userData.");
return;
}
RefreshUI(context);
}
#endregion
private void EnsureButtonListeners()
{
if (_listenersBound)
{
return;
}
_listenersBound = true;
View.startButton.onClick.AddListener(OnStartButtonClick);
View.fileButton.onClick.AddListener(OnFileButtonClick);
View.guideButton.onClick.AddListener(OnGuideButtonClick);
View.settingButton.onClick.AddListener(OnSettingButtonClick);
View.quitButton.onClick.AddListener(OnQuitButtonClick);
View.aboutButton.onClick.AddListener(OnAboutButtonClick);
}
private void OnStartButtonClick()
{
FireButtonClick(MenuButtonId.StartGame);
}
private void OnFileButtonClick()
{
FireButtonClick(MenuButtonId.File);
}
private void OnGuideButtonClick()
{
FireButtonClick(MenuButtonId.Guide);
}
private void OnSettingButtonClick()
{
FireButtonClick(MenuButtonId.Setting);
}
private void OnQuitButtonClick()
{
FireButtonClick(MenuButtonId.Quit);
}
private void OnAboutButtonClick()
{
FireButtonClick(MenuButtonId.About);
}
private void FireButtonClick(MenuButtonId button)
{
GameEntry.Event.Fire(this, MenuButtonClickEventArgs.Create(button));
}
}
}