using System.Collections.Generic; using Code.Scripts.Gameplay.Utils; using Cysharp.Threading.Tasks; using Framework; using Gameplay.Unit; using PhxhSDK; using UnityEngine.Rendering.Universal; using Constants = Framework.Constants; namespace Gameplay.Skill { using Common; using UnityEngine; public class SkillScreenEffect { public Camera skillCamera; private List _cacheObjs; private List _cacheLayers; private List _cacheUnits; public List cacheUnits { get { return _cacheUnits; } } public bool isHide; public void Init() { skillCamera = CmpObjRef.instance.m_SkillCamera; skillCamera.gameObject.SetActive(false); _cacheObjs = new List(); _cacheLayers = new List(); _cacheUnits = new List(); } public void Restore() { if (skillCamera == null) return; if (skillCamera.gameObject == null) return; skillCamera.gameObject.SetActive(true); } public void Show() { isHide = false; // 通知UI黑屏 EventManager.Instance.Send(EventManager.EventName.INFIGHT_BLACK_SCREEN_START); var mainCamera = Camera.main; // 同步相机参数 if (mainCamera != null) { var transform = mainCamera.transform; var transform1 = skillCamera.transform; transform1.position = transform.position; transform1.rotation = transform.rotation; skillCamera.orthographic = mainCamera.orthographic; skillCamera.orthographicSize = mainCamera.orthographicSize; skillCamera.fieldOfView = mainCamera.fieldOfView; skillCamera.nearClipPlane = mainCamera.nearClipPlane; skillCamera.farClipPlane = mainCamera.farClipPlane; // // 关闭主相机post效果 // var urpDataMain = mainCamera.GetComponent(); // urpDataMain.renderPostProcessing = false; } skillCamera.gameObject.SetActive(true); } public async void StartHide() { // 通知UI黑屏结束 EventManager.Instance.Send(EventManager.EventName.INFIGHT_BLACK_SCREEN_END); // 等待播放完成 await UniTask.Delay(250); skillCamera.gameObject.SetActive(false); // // 开启主相机post效果 // var mainCamera = Camera.main; // if (mainCamera != null) // { // var urpDataMain = mainCamera.GetComponent(); // urpDataMain.renderPostProcessing = true; // } for (var i = 0; i < _cacheObjs.Count; ++i) { var cacheObj = _cacheObjs[i]; var cacheLayer = _cacheLayers[i]; cacheObj.SetLayerEx(cacheLayer); } _cacheObjs.Clear(); _cacheLayers.Clear(); _cacheUnits.Clear(); isHide = true; } public void AttachObj(GameObject obj) { if (_cacheObjs.Contains(obj)) return; _cacheObjs.Add(obj); _cacheLayers.Add(obj.layer); obj.SetLayerEx(LayerDefine.Skill); } public void AttachUnit(GameUnit unit) { if (_cacheUnits.Contains(unit)) return; _cacheUnits.Add(unit); AttachObj(unit.Node.GameObject); EventManager.Instance.Send(EventManager.EventName.INFIGHT_SKILL_ACTON_UNIT, unit); } public void Dispose() { } } }