using System.Collections; using System.Collections.Generic; using UnityEngine; using XWFramework.Tools; using System; namespace Level1 { [DefaultExecutionOrder(-10)] public class GameManager : MonoSingleton { public GameObject btn; public delegate void BaseDelegate(); [NonSerialized] public UI ui; [NonSerialized] public CameraManager cameraManager; [NonSerialized] public DataManager dataManager; [NonSerialized] public AudioManager audioManager; /// /// 玩家移动,NPC移动,车子移动 /// public static BaseDelegate StartGame; public Dictionary questionCallBack = new Dictionary(); public PlayerController player; [NonSerialized] public int questionIndex = 0; public Transform bjz; public GameObject sjz; public Animator animator; public GameObject[] needTransferObj; protected override void Awake() { base.Awake(); ui = GetComponentInChildren(); cameraManager = GetComponentInChildren(); dataManager = GetComponentInChildren(); audioManager = GetComponentInChildren(); InitQuestionCallBack(); } void InitQuestionCallBack() { questionCallBack.Add(0, Choose); } #region 进程 private void Start() { btn.SetActive(true); } public void ClickStart() { StartGame(); } public void PlayerArrive() { ui.Show(UIType.Toggle); } #endregion #region QuestionPanel public Question GetQuestion() { return dataManager.questionData[questionIndex]; } public void QuestionCallBack() { questionCallBack[questionIndex](); } #endregion #region 答题回调 void Choose() { player.gameObject.SetActive(false); sjz.SetActive(true); animator.SetTrigger("Yaotou"); ui.Show(UIType.Info); StartCoroutine(Wait(2f,()=> { ui.Show(UIType.Safe); })); } #endregion /// /// 调整maskPanel /// 转移物体 /// 调整摄像机视角 /// public void Transfer() { ui.Show(UIType.Mask); ui.uiDicts[UIType.Mask].GetComponent().OpenMask(0.5f); StartCoroutine(Wait(1f, () => { cameraManager.SetLookAt(bjz).ChangePosition(0.75f, 56.27f, 10); foreach (var obj in needTransferObj) { obj.transform.position += new Vector3(-12, 0.185f, 0); } sjz.SetActive(true); ui.ShowErrorTip("恭喜通关",60); audioManager.PlayEnd(); ui.ShowTip(dataManager.dialogues[2]); })); StartCoroutine(Wait(2.5f, () => { EduCoderTool.WebConnecter.Singleton.SendResultToWeb(true); })); } IEnumerator Wait(float t, Action action) { yield return new WaitForSeconds(t); action(); } } }