剧情+对话完善

This commit is contained in:
SoulliesOfficial
2026-07-21 15:24:42 -04:00
parent 8f230831e9
commit 810d019619
161 changed files with 7271 additions and 1893 deletions

View File

@@ -0,0 +1,54 @@
using Ichni.UI;
using UnityEngine;
using UnityEngine.UI;
namespace Ichni.Menu
{
/// <summary>
/// 可挂载在任意菜单页面上的通用设置入口。
/// <para>按钮默认从父级自动查找 <see cref="UIPageBase"/> 作为来源页面;如按钮不在页面层级之下,
/// 可在 Inspector 中手动指定 sourcePage。点击后由 SettingsUIPage 记录来源,因此返回时会回到正确页面。</para>
/// </summary>
[RequireComponent(typeof(Button))]
public class SettingsButton : MonoBehaviour
{
[SerializeField, Tooltip("打开设置页前需要隐藏的来源页面。留空时自动从父级寻找 UIPageBase。")]
private UIPageBase sourcePage;
private Button _button;
private void Awake()
{
_button = GetComponent<Button>();
if (sourcePage == null)
sourcePage = GetComponentInParent<UIPageBase>();
}
private void OnEnable()
{
_button.onClick.AddListener(OpenSettings);
}
private void OnDisable()
{
_button.onClick.RemoveListener(OpenSettings);
}
/// <summary>
/// 打开全局 SettingsUIPage。设置页引用未配置时仅输出警告保留当前页面避免点击后丢失界面。
/// </summary>
private void OpenSettings()
{
SettingsUIPage settingsPage = MenuManager.instance != null
? MenuManager.instance.settingsUIPage
: null;
if (settingsPage == null)
{
Debug.LogWarning("[SettingsButton] SettingsUIPage 未配置,无法打开设置页。", this);
return;
}
settingsPage.OpenFrom(sourcePage);
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 9fad765e8a5d4c47a434e22e06254b7e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -10,6 +10,10 @@ namespace Ichni.Menu
public Button backButton;
public SettingsWindowController settingsWindowController;
public OffsetEditor offsetEditor;
// 设置页不再假定只能从章节选择页进入。该引用只保存本次打开设置时的来源,
// 不需要写入存档;关闭设置页后即清空。
private UIPageBase _returnPage;
protected override void Awake()
{
@@ -19,8 +23,20 @@ namespace Ichni.Menu
{
FadeOut();
SettingsManager.instance.SaveGameSettings();
MenuManager.instance.chapterSelectionUIPage.FadeIn();
(_returnPage ?? MenuManager.instance.chapterSelectionUIPage)?.FadeIn();
_returnPage = null;
});
}
/// <summary>
/// 由独立的 <see cref="SettingsButton"/> 调用,记录打开设置页的来源并切换页面。
/// 这样章节选择页、剧情页及未来其它页面都可复用同一个设置按钮逻辑。
/// </summary>
public void OpenFrom(UIPageBase sourcePage)
{
_returnPage = sourcePage;
sourcePage?.FadeOut();
FadeIn();
}
}
}