feat(dialog): 升级Dialog系统到YarnSpinner 3.2
This commit is contained in:
@@ -2,21 +2,23 @@
|
||||
using AibisDream.Framework;
|
||||
using AibisDream.Kit;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
using Yarn.Unity;
|
||||
|
||||
namespace AibisDream
|
||||
{
|
||||
public class DialogController : Singleton<DialogController>
|
||||
{
|
||||
private const string DefaultDialogueLocaleCode = "zh-Hans";
|
||||
private DialogueRunner _dialogueRunner;
|
||||
private LocalisedLineProvider _lineProvider;
|
||||
|
||||
[SerializeField] private LineAdvanceInput lineAdvanceInput;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
_dialogueRunner = GetComponentInChildren<DialogueRunner>();
|
||||
_lineProvider = GetComponentInChildren<LocalisedLineProvider>();
|
||||
_dialogueRunner.onDialogueStart ??= new UnityEvent();
|
||||
_dialogueRunner.onDialogueComplete ??= new UnityEvent();
|
||||
|
||||
_dialogueRunner.onDialogueStart.AddListener(() =>
|
||||
{
|
||||
@@ -72,13 +74,13 @@ namespace AibisDream
|
||||
public void StartDialog(YarnProject yarnProject)
|
||||
{
|
||||
_dialogueRunner.SetProject(yarnProject);
|
||||
_lineProvider.InitStringTable(yarnProject.name);
|
||||
_dialogueRunner.StartDialogue("Start");
|
||||
ConfigureLineProviderLocale();
|
||||
_ = _dialogueRunner.StartDialogue("Start");
|
||||
}
|
||||
|
||||
public void StopDialog()
|
||||
{
|
||||
_dialogueRunner.Stop();
|
||||
_ = _dialogueRunner.Stop();
|
||||
StorageSystem.Instance.Clear();
|
||||
DialogUIManager.Instance.HideDialog();
|
||||
}
|
||||
@@ -86,8 +88,8 @@ namespace AibisDream
|
||||
public void LoadDialog(YarnProject yarnProject)
|
||||
{
|
||||
_dialogueRunner.SetProject(yarnProject);
|
||||
_lineProvider.InitStringTable(yarnProject.name);
|
||||
_dialogueRunner.StartDialogue("Center");
|
||||
ConfigureLineProviderLocale();
|
||||
_ = _dialogueRunner.StartDialogue("Center");
|
||||
}
|
||||
|
||||
public void StartDialogNode(string nodeName)
|
||||
@@ -101,7 +103,7 @@ namespace AibisDream
|
||||
|
||||
if (CheckIfNodeExistInCurrentYarnProject(nodeName))
|
||||
{
|
||||
_dialogueRunner.StartDialogue(nodeName);
|
||||
_ = _dialogueRunner.StartDialogue(nodeName);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -111,7 +113,13 @@ namespace AibisDream
|
||||
|
||||
private bool CheckIfNodeExistInCurrentYarnProject(string nodeName)
|
||||
{
|
||||
YarnProject currentProject = _dialogueRunner.yarnProject;
|
||||
var currentProject = _dialogueRunner.YarnProject;
|
||||
if (currentProject == null)
|
||||
{
|
||||
Debug.LogWarning("当前没有可用的 YarnProject,无法检查节点");
|
||||
return false;
|
||||
}
|
||||
|
||||
string[] nodeNames = currentProject.NodeNames;
|
||||
if (Array.Exists(nodeNames, item => item == nodeName))
|
||||
{
|
||||
@@ -124,6 +132,14 @@ namespace AibisDream
|
||||
}
|
||||
}
|
||||
|
||||
private void ConfigureLineProviderLocale()
|
||||
{
|
||||
if (_dialogueRunner.LineProvider is LineProviderBehaviour lineProvider)
|
||||
{
|
||||
lineProvider.LocaleCode = DefaultDialogueLocaleCode;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 推进方式修改
|
||||
|
||||
Reference in New Issue
Block a user