using System.Collections; using AibisDream.Config; using UnityEngine; using Yarn.Unity; namespace AibisDream { public class GameLoopManager : Singleton { [Header("运行模式")] [SerializeField] private RunMode runMode; [Header("正式环境参数")] [SerializeField] private TalkSceneSO firstTalkSO; private TalkSceneSO currentTalkSceneSO; [SerializeField] private string clinicScene; [Header("测试环境参数")] [SerializeField] private string testYarnProject; public void Start() { ConfigUtil.Instance.InitConfig(); if (runMode == RunMode.Test) { MainUIController.Instance.TVFadeOut(1); GameObject.Find("Menu Canvas").SetActive(false); StartCoroutine(StartTestGame()); } } public void StartNewGame() { currentTalkSceneSO = firstTalkSO; StartCoroutine(LoadClinicScene()); } private IEnumerator LoadClinicScene() { yield return SceneLoader.Instance.LoadSceneAsync(clinicScene); StartMenuViewer.Instance.HideStartMenu(); DialogController.Instance.StartDialog(currentTalkSceneSO.yarnProject); } public IEnumerator StartTestGame() { yield return SceneLoader.Instance.LoadSceneAsync(clinicScene); var proj = Resources.Load($"Yarn/{testYarnProject}/{testYarnProject}"); DialogController.Instance.StartDialog(proj); } public IEnumerator NextSceneSo() { if (currentTalkSceneSO && currentTalkSceneSO.nextScene) { currentTalkSceneSO = currentTalkSceneSO.nextScene; yield return MainUIController.Instance.FadeInSync(1); yield return LoadClinicScene(); yield return MainUIController.Instance.FadeOutSync(1); } else { yield return null; Debug.Log("没有下个场景了"); } } } public enum RunMode { Test, Pro, FixTest } }