From 2784ae99df5ec03ba683259bebc2d26ff0aeb305 Mon Sep 17 00:00:00 2001 From: Ding Yuntian <1491671119@qq.com> Date: Wed, 11 Jun 2025 21:59:36 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=B8=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Scripts/Framework/OtherKit/CameraKit.cs | 43 +++++++++++++++++++ Assets/Scripts/Framework/OtherKit/UICamera.cs | 17 ++++++++ .../Framework/OtherKit/UICamera.cs.meta | 3 ++ 3 files changed, 63 insertions(+) create mode 100644 Assets/Scripts/Framework/OtherKit/UICamera.cs create mode 100644 Assets/Scripts/Framework/OtherKit/UICamera.cs.meta 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