diff --git a/Assets/Scripts/Framework/OtherKit/CameraKit.cs b/Assets/Scripts/Framework/OtherKit/CameraKit.cs index aacbea435..9da2660da 100644 --- a/Assets/Scripts/Framework/OtherKit/CameraKit.cs +++ b/Assets/Scripts/Framework/OtherKit/CameraKit.cs @@ -7,6 +7,7 @@ using DG.Tweening; using DG.Tweening.Core; using DG.Tweening.Plugins.Options; using UnityEngine; +using UnityEngine.Rendering.Universal; using Yarn.Unity; namespace AibisDream.Framework @@ -65,6 +66,48 @@ namespace AibisDream.Framework #region 相机信息注册 + public void RegisterUICamera(Camera overlayCamera) + { + // 获取 Main Camera 的 UniversalAdditionalCameraData + var mainCameraData = _orthoMainCamera.GetUniversalAdditionalCameraData(); + + if (mainCameraData != null) + { + // 检查 Overlay Camera 是否已经在 Stack 中 + if (!mainCameraData.cameraStack.Contains(overlayCamera)) + { + // 将 Overlay Camera 添加到 Stack + mainCameraData.cameraStack.Add(overlayCamera); + Debug.Log("Overlay Camera added to Main Camera stack."); + } + } + else + { + Debug.LogError("Main Camera does not have UniversalAdditionalCameraData."); + } + } + + public void UnRegisterUICamera(Camera overlayCamera) + { + // 获取 Main Camera 的 UniversalAdditionalCameraData + var mainCameraData = _orthoMainCamera.GetUniversalAdditionalCameraData(); + + if (mainCameraData != null) + { + // 检查 Overlay Camera 是否已经在 Stack 中 + if (!mainCameraData.cameraStack.Contains(overlayCamera)) + { + // 将 Overlay Camera 添加到 Stack + mainCameraData.cameraStack.Remove(overlayCamera); + Debug.Log("Overlay Camera added to Main Camera stack."); + } + } + else + { + Debug.LogError("Main Camera does not have UniversalAdditionalCameraData."); + } + } + public void RegisterCamera(CameraEnum camType, ICinemachineCamera virtualCamera, bool isPerspective = false) { _virtualCameraDict[camType] = virtualCamera; diff --git a/Assets/Scripts/Framework/OtherKit/UICamera.cs b/Assets/Scripts/Framework/OtherKit/UICamera.cs new file mode 100644 index 000000000..80b74fcb5 --- /dev/null +++ b/Assets/Scripts/Framework/OtherKit/UICamera.cs @@ -0,0 +1,17 @@ +using UnityEngine; + +namespace AibisDream.Framework +{ + public class UICamera : MonoBehaviour + { + private void Awake() + { + CameraKit.Instance.RegisterUICamera(GetComponent()); + } + + private void OnDestroy() + { + CameraKit.Instance.UnRegisterUICamera(GetComponent()); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Framework/OtherKit/UICamera.cs.meta b/Assets/Scripts/Framework/OtherKit/UICamera.cs.meta new file mode 100644 index 000000000..53202c58f --- /dev/null +++ b/Assets/Scripts/Framework/OtherKit/UICamera.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 061bb2d8e88b4f7c96c1a1b10e32d6eb +timeCreated: 1749649908 \ No newline at end of file