using DG.Tweening; using UnityEngine; public class CoverCamera : MonoBehaviour { private static CoverCamera instance; private static int CoverCnt = 0; private GameObject goCover; private DOTweenAnimation dtaRotate; public static void Init() { if (Instance != null && instance.goCover == null) { instance.goCover = instance.gameObject; instance.dtaRotate = instance.transform.GetChild(0).GetChild(0).GetComponent(); } } public static void SetCamera(Camera camui) { instance.GetComponent().worldCamera = camui; } // 커버 상태. public static bool IsOn() => CoverCnt > 0; // 커버 켜기. public static void Hold() { CoverCnt++; if (!instance.goCover.activeSelf) { instance.dtaRotate.DOPlay(); instance.goCover.SetActive(true); } } // 커버 끄기. public static void Release() { CoverCnt--; if (CoverCnt < 0) CoverCnt = 0; if (CoverCnt <= 0 && instance.goCover.activeSelf) { instance.dtaRotate.DOPause(); instance.goCover.SetActive(false); } } public static void Reset() { CoverCnt = 0; instance.goCover.SetActive(false); } public static CoverCamera Instance { get { if (instance == null) { instance = FindObjectOfType(typeof(CoverCamera)) as CoverCamera; if (instance == null) { instance = Instantiate(Resources.Load("CoverCamera")); DontDestroyOnLoad(instance.gameObject); } } return instance; } } }