96 lines
2.9 KiB
C#
96 lines
2.9 KiB
C#
using System.Collections.Generic;
|
|
using Code.Scripts.Gameplay.Utils;
|
|
using Cysharp.Threading.Tasks;
|
|
using PhxhSDK;
|
|
using Constants = Framework.Constants;
|
|
|
|
namespace Gameplay.Skill
|
|
{
|
|
using Common;
|
|
using UnityEngine;
|
|
|
|
public class SkillScreenEffect
|
|
{
|
|
|
|
public Camera skillCamera;
|
|
|
|
public GameObject skillBg;
|
|
|
|
private List<GameObject> _cacheObjs;
|
|
private List<int> _cacheLayers;
|
|
|
|
public async UniTask Init()
|
|
{
|
|
skillCamera = CmpObjRef.instance.m_SkillCamera;
|
|
skillCamera.gameObject.SetActive(false);
|
|
_cacheObjs = new List<GameObject>();
|
|
_cacheLayers = new List<int>();
|
|
var uiCameraTrans = UIRoot.Instance.UICamera.transform;
|
|
if (uiCameraTrans.childCount == 0)
|
|
{
|
|
// 还没有, 需要创建
|
|
var prefab = await AssetManager.Instance.LoadAssetAsync<GameObject>(Constants.SKILL_FULLSCRREN_BG);
|
|
var go = Object.Instantiate(prefab, uiCameraTrans);
|
|
go.transform.localPosition = Vector3.zero;
|
|
go.transform.localRotation = Quaternion.identity;
|
|
skillBg = go;
|
|
}
|
|
else
|
|
{
|
|
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);
|
|
}
|
|
|
|
}
|
|
}
|