StorySystem
This commit is contained in:
71
Assets/Scripts/NewStorySystem/UI/DialogUIPage.cs
Normal file
71
Assets/Scripts/NewStorySystem/UI/DialogUIPage.cs
Normal file
@@ -0,0 +1,71 @@
|
||||
using Ichni.Story.Dialogue;
|
||||
using Ichni.UI;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
|
||||
namespace Ichni.Story.UI
|
||||
{
|
||||
/// <summary>
|
||||
/// 对话系统专用的 UI 页面容器。
|
||||
/// 接管整个对话面板的淡入淡出及交互状态控制,
|
||||
/// 将显示生命周期与对话流逻辑 (VNDialoguePresenter) 彻底解耦。
|
||||
/// </summary>
|
||||
public class DialogUIPage : UIPageBase
|
||||
{
|
||||
public static DialogUIPage instance;
|
||||
|
||||
[Header("立绘舞台")]
|
||||
public VNPortraitStage portraitStage;
|
||||
|
||||
[Header("台词区")]
|
||||
public TMPro.TextMeshProUGUI dialogueText;
|
||||
public GameObject speakerContainer;
|
||||
public TMPro.TextMeshProUGUI speakerText;
|
||||
|
||||
[Header("推进按钮")]
|
||||
public UnityEngine.UI.Button advanceButton;
|
||||
[Tooltip("点击后自动快进,直到遇到选项")]
|
||||
public UnityEngine.UI.Button fastForwardButton;
|
||||
|
||||
[Header("选项区")]
|
||||
public GameObject choiceFrame;
|
||||
public ChoiceButton[] choiceButtons = new ChoiceButton[4];
|
||||
|
||||
[Header("动态组件")]
|
||||
public DialogWheel dialogWheel;
|
||||
|
||||
protected override void Awake()
|
||||
{
|
||||
base.Awake();
|
||||
|
||||
if (instance == null)
|
||||
{
|
||||
instance = this;
|
||||
}
|
||||
else
|
||||
{
|
||||
Destroy(gameObject);
|
||||
return;
|
||||
}
|
||||
|
||||
// 默认启动时强制隐藏
|
||||
if (mainCanvasGroup != null)
|
||||
{
|
||||
mainCanvasGroup.alpha = 0f;
|
||||
mainCanvasGroup.interactable = false;
|
||||
mainCanvasGroup.blocksRaycasts = false;
|
||||
mainCanvasGroup.gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
public void PlayFadeIn(UnityAction onComplete = null)
|
||||
{
|
||||
FadeIn(0.2f, false, onComplete);
|
||||
}
|
||||
|
||||
public void PlayFadeOut(UnityAction onComplete = null)
|
||||
{
|
||||
FadeOut(0.2f, false, onComplete);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user