using System.Collections.Generic; using Code.Scripts.Gameplay.Utils; namespace Gameplay.Skill { using Common; using UnityEngine; public class SkillScreenEffect { public Camera skillCamera; public GameObject skillBg; private List _cacheObjs; private List _cacheLayers; public void Init() { skillCamera = CmpObjRef.instance.m_SkillCamera; skillCamera.gameObject.SetActive(false); _cacheObjs = new List(); _cacheLayers = new List(); skillBg = UIRoot.Instance.UICamera.transform.GetChild(0).gameObject; skillBg.SetActive(false); } public void Restore() { if (skillCamera == null) return; if (skillCamera.gameObject == null) return; skillCamera.gameObject.SetActive(true); } public void Show() { skillBg.SetActive(true); var mainCamera = Camera.main; // 同步相机参数 if (mainCamera != null) { var transform = mainCamera.transform; var transform1 = skillCamera.transform; transform1.position = transform.position; transform1.rotation = transform.rotation; skillCamera.orthographicSize = mainCamera.orthographicSize; skillCamera.nearClipPlane = mainCamera.nearClipPlane; skillCamera.farClipPlane = mainCamera.farClipPlane; } skillCamera.gameObject.SetActive(true); } public void Hide() { skillCamera.gameObject.SetActive(false); skillBg.SetActive(false); for (var i = 0; i < _cacheObjs.Count; ++i) { var cacheObj = _cacheObjs[i]; var cacheLayer = _cacheLayers[i]; cacheObj.SetLayerEx(cacheLayer); } _cacheObjs.Clear(); _cacheLayers.Clear(); } public void AttachObj(GameObject obj) { _cacheObjs.Add(obj); _cacheLayers.Add(obj.layer); obj.SetLayerEx(LayerDefine.Skill); } } }