using ZXKFramework; using UnityEngine; using System.Collections; using DongWuYiXue.Main; namespace DongWuYiXue.DaoNiaoShu { public class GameManager : MonoSingleton { //交互模块 [HideInInspector] public InteractionManager interactionManager; //动画播放模块 [HideInInspector] public TimelineClipManager timelineManager; [HideInInspector] public FSMManager fsm; //玩家管理器 [HideInInspector] public PlayerManager playerManager; //高亮模块 [HideInInspector] public HighLightManager highLightManager; //计时模块 [HideInInspector] public TimeCounterManager timeCounterManager; //成绩模块 [HideInInspector] public KaoHeManager kaoheManager; //UI模块 [HideInInspector] public IUIManager uiManager = new UIManager(); //虚拟相机模块 [HideInInspector] public VirtualCameraManager virtualCameraManager; public bool test; [HideInInspector] public SceneDataHandler sceneDataHandler; IEnumerator Start() { if (test) { //数据初始化 MVC.RegisterModel(new Main.GameModel()); yield return MVC.GetModel().Init(); MVC.GetModel().modeType = ModeType.KaoHe; MVC.GetModel().mainData = MVC.GetModel().excelData.GetMainData(2); } MVC.RegisterModel(new GameModel()); yield return MVC.GetModel().Init(); Game.Instance.eventManager.AddListener(PlayTrueOrFalseSound); Game.Instance.eventManager.AddListener(PlaySound); sceneDataHandler = transform.FindFirst("SceneDataHandler"); interactionManager = transform.FindFirst("InteractionManager"); virtualCameraManager = transform.FindFirst("VirtualCameraManager"); fsm = transform.FindFirst("FSMManager"); timelineManager = transform.FindFirst("TimelineManager"); highLightManager = transform.FindFirst("HighLightManager"); timeCounterManager = transform.FindFirst("TimeCounterManager"); kaoheManager = transform.FindFirst("KaoHeManager"); playerManager = transform.FindFirst("PlayerManager"); //aiManager = transform.FindFirst("AIManager"); //存储数据初始化 sceneDataHandler.Init(); Game.Instance.fsm.ChangeState(); uiManager.ShowUI(); //虚拟相机初始化 virtualCameraManager.Init(); //高亮初始化 highLightManager.Init(); //状态机初始化 fsm.Init(); //动画模块初始化 timelineManager.Init(); //计时器初始化 timeCounterManager.Init(); if(MVC.GetModel().modeType == ModeType.ShiXun ) { uiManager.ShowUI(); uiManager.GetUI().BuildButton(MVC.GetModel().GetTreeViewData()); uiManager.ShowUI(); uiManager.ShowUI(); } if ( MVC.GetModel().modeType == ModeType.KaoHe) { uiManager.ShowUI(); uiManager.ShowUI(); } } private void PlaySound(PlaySoundEvent e) { Game.Instance.sound.PlayBGM(e.path, false, clip => { e.callBack?.Invoke(clip.length); }); } private void PlayTrueOrFalseSound(PlayTrueOrFalseEvent e) { if (e.isTrue) { Game.Instance.sound.PlayMS(MVC.GetModel().mainData.folder + "/Sounds/right"); } else { Game.Instance.sound.PlayMS(MVC.GetModel().mainData.folder + "/Sounds/false"); } } private void OnDestroy() { Game.Instance.eventManager.RemoveListener(PlayTrueOrFalseSound); Game.Instance.eventManager.RemoveListener(PlaySound); } } }