气泡组件和配置项

This commit is contained in:
2024-09-13 19:39:22 +00:00
parent 4d9de0712e
commit 7adffa4372
73 changed files with 5671 additions and 2047 deletions
@@ -1,6 +1,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using AibisDream.Utility;
using UnityEngine;
using UnityEngine.Events;
using Yarn.Unity;
@@ -11,12 +12,13 @@ namespace AibisDream
public class DialogController : Singleton<DialogController>
{
private const string BookManager = "BookManager";
private DialogueRunner dialogueRunner;
private DialogueRunner dialogueRunner;
private VariableStorageBehaviour _variableStorage;
private Dictionary<string, Action<YarnOption[]>> commandMap = new();
private readonly Dictionary<string, Action<YarnOption[]>> commandMap = new();
# region controller状态标识
private bool _isTalking;
@@ -39,13 +41,15 @@ namespace AibisDream
}
// 对话框被阻塞时不能继续对话框交互
public bool IsBlock { get; set; }
public bool IsBlock { get; private set; }
public bool quickRunMode;
# endregion
public static UnityAction OnDialogueStart;
public static UnityAction OnDialogueComplete;
public bool quickRunMode;
private void Start()
{
dialogueRunner = GetComponentInChildren<DialogueRunner>();
@@ -63,6 +67,7 @@ namespace AibisDream
// 对话结束时切下一个SO
dialogueRunner.onDialogueComplete.AddListener(() =>
{
DialogCanvasManager.Instance.SwitchDialogView(DialogViewType.Bubble);
StartCoroutine(GameLoopManager.Instance.NextSceneSo());
});
}
@@ -97,6 +102,7 @@ namespace AibisDream
/// <param name="yarnProject">Yarn组</param>
public void StartDialog(YarnProject yarnProject)
{
dialogueRunner.VariableStorage.Clear();
dialogueRunner.SetProject(yarnProject);
dialogueRunner.StartDialogue("Start");
}
@@ -135,7 +141,7 @@ namespace AibisDream
{
Debug.Log($"命令 {commandName} 已经存在,将被替换");
}
commandMap[commandName] = commandAction;
}
@@ -210,11 +216,12 @@ namespace AibisDream
{
HideDialog();
//yield return MainUIController.Instance.FadeInSync(duration);
Camera.main.orthographicSize=5;
Camera.main.transform.position=new Vector3(0,0,-10);
Camera.main.orthographicSize = 5;
Camera.main.transform.position = new Vector3(0, 0, -10);
yield return SceneLoader.Instance.LoadSceneAsync(sceneName);
//yield return new WaitForSeconds(1f);
//yield return MainUIController.Instance.FadeOutSync(duration);
DialogCanvasManager.Instance.SwitchDialogView(sceneName == "ClinicScene"
? DialogViewType.Bubble
: DialogViewType.OldBox);
}
[YarnCommand("unload_scene")]
@@ -226,7 +233,7 @@ namespace AibisDream
[YarnCommand("hide_dialog")]
public static void HideDialog()
{
DialogUiViewer.Instance.HideDialog();
DialogCanvasManager.GetCurView().HideDialog();
}
[YarnCommand("fade_in")]
@@ -246,24 +253,25 @@ namespace AibisDream
{
return MainUIController.Instance.ShowObj(picName);
}
[YarnCommand("hide_obj")]
public static IEnumerator HideObj()
{
return MainUIController.Instance.HideObj();
}
[YarnCommand("move_to_fix")]
public static IEnumerator Move_to_fix()
public static IEnumerator MoveToFix()
{
bool isCompleted = false;
Sequence s = DOTween.Sequence();
s.Append(Camera.main.transform.DOMove(new UnityEngine.Vector3(6.8f, 0, -10), 2f))
.OnComplete(() =>
{
// 动画完成后的反馈操作
Debug.Log("Move_to_fix sequence completed.");
isCompleted = true;
});
.OnComplete(() =>
{
// 动画完成后的反馈操作
Debug.Log("Move_to_fix sequence completed.");
isCompleted = true;
});
// 等待动画完成
yield return new WaitUntil(() => isCompleted);
@@ -271,15 +279,22 @@ namespace AibisDream
// 动画完成后的其他操作
Debug.Log("Continuing after Move_to_fix sequence.");
}
[YarnCommand("move_out_fix")]
public static void Move_out_fix()
public static void MoveOutFix()
{
Camera.main.transform.position=new UnityEngine.Vector3(6.8f, 0, -10);
Camera.main.transform.position = new UnityEngine.Vector3(6.8f, 0, -10);
Sequence s = DOTween.Sequence();
//s.AppendInterval(0.5f);
s.Append(Camera.main.transform.DOMove(new UnityEngine.Vector3(0, 0, -10), 2f));
}
[YarnCommand("switch_dialog_view")]
public static void SwitchDialogView(string viewName)
{
DialogCanvasManager.Instance.SwitchDialogView(Enum.Parse<DialogViewType>(viewName));
}
#endregion
}
}