using System.Collections; using System.Collections.Generic; using UnityEngine; using System; public enum GameState { Vertical, DPUpper, DPMiddle, DPlower } public class GameManager : Singleton { public GameObject[] canvas; public GameObject[] cameras; public GameObject[] looks; public GameState curState; public GameObject curCamera; private GameObject curCanvas; public GameObject curLook; public float timeflag; public GameObject btns; protected override void Awake() { base.Awake(); curState = GameState.Vertical; timeflag = 2; } private void OnEnable() { //timeflag = 0; //TaskManager.Instance.StartTask(); } private void Start() { foreach (GameObject obj in canvas) { obj.SetActive(false); } foreach (GameObject obj in cameras) { obj.SetActive(false); } foreach (GameObject obj in looks) { obj.SetActive(false); } } private void Update() { SwitchCamera(); } void SwitchCamera() { if (timeflag<=2) { timeflag += Time.deltaTime; } switch (curState) { case GameState.Vertical: if (curCamera && curCamera != cameras[0]) { curCamera.SetActive(false); } curCamera = cameras[0]; if (curCanvas && curCanvas != canvas[0]) { curCanvas.SetActive(false); } curCanvas = canvas[0]; curLook = null; foreach (GameObject obj in looks) { if (obj.activeInHierarchy) { obj.SetActive(false); } } break; case GameState.DPUpper: if (curCamera && curCamera != cameras[1]) { curCamera.SetActive(false); } curCamera = cameras[1]; if (curCanvas && curCanvas != canvas[1]) { curCanvas.SetActive(false); } curCanvas = canvas[1]; if (curLook && curLook != looks[0]) { curLook.SetActive(false); } curLook = looks[0]; break; case GameState.DPMiddle: if (curCamera && curCamera != cameras[2]) { curCamera.SetActive(false); } curCamera = cameras[2]; if (curCanvas && curCanvas != canvas[1]) { curCanvas.SetActive(false); } curCanvas = canvas[1]; if (curLook && curLook != looks[1]) { curLook.SetActive(false); } curLook = looks[1]; break; case GameState.DPlower: if (curCamera && curCamera != cameras[3]) { curCamera.SetActive(false); } curCamera = cameras[3]; if (curCanvas && curCanvas != canvas[1]) { curCanvas.SetActive(false); } curCanvas = canvas[1]; if (curLook && curLook != looks[2]) { curLook.SetActive(false); } curLook = looks[2]; break; } if (timeflag >= 2) { curCanvas.SetActive(true); } curCamera.SetActive(true); if (curLook) { curLook.SetActive(true); } } public void setCurState(int state) { int num = 0; if (curState == GameState.Vertical) { num = 0; } else if (curState == GameState.DPUpper) { num=1; } else if (curState == GameState.DPMiddle) { num=2; } else if (curState == GameState.DPlower) { num=3; } if (num == state) return; curCanvas.SetActive(false); timeflag = 0; if (state == 0) { curState = GameState.Vertical; btns.SetActive(false); } else if (state == 1) { curState = GameState.DPUpper; btns.SetActive(true); } else if (state == 2) { curState = GameState.DPMiddle; btns.SetActive(true); } else if (state == 3) { curState = GameState.DPlower; btns.SetActive(true); } } }