using System.Collections; using UnityEngine; using Yarn.Unity; using AibisDream.FixSystem; using AibisDream.Framework; namespace AibisDream.MiniGame.Language { /// /// 语言分析系统 Yarn 命令 /// public static class LanguageAnalysisYarnCommands { private static FixStateMachine FixStateMachine => FixSystemCenter.SystemDic.Get(); /// /// 进入语言分析系统状态 /// <> /// [YarnCommand("enter_language_analysis")] public static void EnterLanguageAnalysis() { if (FixStateMachine == null) { Debug.LogError("[LanguageAnalysis] FixStateMachine 未找到!"); return; } // 通过协程切换状态 MonoBehaviourHelper.Instance.StartCoroutine(SwitchToLanguageAnalysisState()); } /// /// 退出语言分析系统状态 /// <> /// [YarnCommand("exit_language_analysis")] public static void ExitLanguageAnalysis() { if (FixStateMachine == null) { Debug.LogError("[LanguageAnalysis] FixStateMachine 未找到!"); return; } // 切换回诊所状态或其他默认状态 MonoBehaviourHelper.Instance.StartCoroutine(FixStateMachine.SwitchState(FixState.Clinic)); } private static IEnumerator SwitchToLanguageAnalysisState() { yield return FixStateMachine.SwitchState(FixState.LanguageAnalysis); } } /// /// MonoBehaviour 辅助类,用于启动协程 /// public class MonoBehaviourHelper : MonoBehaviour { private static MonoBehaviourHelper _instance; public static MonoBehaviourHelper Instance { get { if (_instance == null) { GameObject go = new GameObject("MonoBehaviourHelper"); _instance = go.AddComponent(); DontDestroyOnLoad(go); } return _instance; } } } }