using NUnit.Framework; using System.Collections; using System.Collections.Generic; using UnityEngine; using YiLiao.Main; using ZXKFramework; namespace YiLiao.JingLuoXueWei { public class GameManager : MonoSingleton { /// /// 所有的经络物体 /// public List allJingLuoGame; /// /// 红色的经络物体(用于变色) /// [Header("红色的经络物体(用于变色)")] public List allRedJingLuoRenderer; /// /// 蓝色的经络物体(用于变色) /// [Header("蓝色的经络物体(用于变色)")] public List allBlueJingLuoRenderer; /// /// 经络红色的材质 /// [Header("经络红色的材质")] public Material redJingLuoMaterial; /// /// 经络蓝色的材质 /// [Header("经络蓝色的材质")] public Material blueJingLuoMaterial; /// /// 经络默认的材质 /// [Header("经络默认的材质")] public Material defaultJingLuoMaterial; /// /// 所有的穴位物体(用于变色) /// public List allXueWeiRenderer; /// /// 默认的材质 /// [Header("穴位默认的材质")] public Material redMaterial; /// /// 变色的材质 /// [Header("穴位变色的材质")] public Material blueMaterial; /// /// 身体透明材质球 /// [Header("身体透明材质球")] public Material touMingMaterial; /// /// 身体不透明材质球 /// [Header("身体不透明材质球")] public Material noTouMingMaterial; [HideInInspector] /// /// 选择的经络 /// public string selectJingLuoName; //交互模块 [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; [HideInInspector] public NetAsyncMgr net; 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"); net = transform.FindFirst("NetAsyncMgr"); //存储数据初始化 sceneDataHandler.Init(); //平台适配初始化 Game.Instance.AdapterInit(); //虚拟相机初始化 virtualCameraManager.Init(); //高亮初始化 highLightManager.Init(); //状态机初始化 //fsm.Init(); //动画模块初始化 timelineManager.Init(); //计时器初始化 timeCounterManager.Init(); 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); } /// /// 更改经络颜色(循行的时候使用) /// /// public void ChangeJingLuoColor(string name) { for (int i = 0; i < allRedJingLuoRenderer.Count; i++) { if (allRedJingLuoRenderer[i].gameObject.name.Contains(name)) { allRedJingLuoRenderer[i].material.SetColor("_BaseColor", new Color(1, 0, 0, 0)); allRedJingLuoRenderer[i].material.SetFloat("_Mode", 0f); } else { allRedJingLuoRenderer[i].material.SetColor("_BaseColor", new Color(1, 0, 1, 0)); } } for (int i = 0; i < allBlueJingLuoRenderer.Count; i++) { if (allBlueJingLuoRenderer[i].gameObject.name.Contains(name)) { allBlueJingLuoRenderer[i].material.SetColor("_BaseColor", new Color(0, 0, 1, 0)); allBlueJingLuoRenderer[i].material.SetFloat("_Mode", 0f); } else { allBlueJingLuoRenderer[i].material.SetColor("_BaseColor", new Color(1, 0, 1, 0)); } } } /// /// 将经络颜色改回默认颜色(关闭循行的时候使用) /// public void ChangeJingLuoDefaultColor() { for (int i = 0; i < allRedJingLuoRenderer.Count; i++) { allRedJingLuoRenderer[i].material.SetColor("_BaseColor", new Color(1, 0, 1, 0)); allRedJingLuoRenderer[i].material.SetFloat("_Mode", 1f); } for (int i = 0; i < allBlueJingLuoRenderer.Count; i++) { allBlueJingLuoRenderer[i].material.SetColor("_BaseColor", new Color(1, 0, 1, 0)); allBlueJingLuoRenderer[i].material.SetFloat("_Mode", 1f); } } } }