From e3f063866fac391ee32ffce93acfd65a22294cdd Mon Sep 17 00:00:00 2001 From: Ding Yuntian <1491671119@qq.com> Date: Wed, 15 Jan 2025 12:39:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0Camera?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scenes/PeipeiFixScene.unity | 145 +++++++++++++++++- .../BodyModule/OscilloscopeSystem.cs | 3 +- .../Scripts/FixSystemNew/FixSystemCenter.cs | 27 +++- .../Scripts/Framework/OtherKit/CameraKit.cs | 20 +++ 4 files changed, 185 insertions(+), 10 deletions(-) diff --git a/Assets/Scenes/PeipeiFixScene.unity b/Assets/Scenes/PeipeiFixScene.unity index ef920409d..af0e7eaa9 100644 --- a/Assets/Scenes/PeipeiFixScene.unity +++ b/Assets/Scenes/PeipeiFixScene.unity @@ -6066,6 +6066,138 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &291061723 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 291061724} + - component: {fileID: 291061727} + - component: {fileID: 291061725} + m_Layer: 5 + m_Name: Deep Camera + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &291061724 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 291061723} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 755572874} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &291061725 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 291061723} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 1 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 + m_TaaSettings: + quality: 3 + frameInfluence: 0.1 + jitterScale: 1 + mipBias: 0 + varianceClampScale: 0.9 + contrastAdaptiveSharpening: 0 +--- !u!20 &291061727 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 291061723} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 --- !u!1 &293524578 GameObject: m_ObjectHideFlags: 0 @@ -11743,8 +11875,8 @@ Canvas: m_GameObject: {fileID: 755572870} m_Enabled: 1 serializedVersion: 3 - m_RenderMode: 0 - m_Camera: {fileID: 0} + m_RenderMode: 1 + m_Camera: {fileID: 291061727} m_PlaneDistance: 100 m_PixelPerfect: 0 m_ReceivesEvents: 1 @@ -11754,7 +11886,7 @@ Canvas: m_VertexColorAlwaysGammaSpace: 0 m_AdditionalShaderChannelsFlag: 25 m_UpdateRectTransformForStandalone: 0 - m_SortingLayerID: 0 + m_SortingLayerID: 1016946085 m_SortingOrder: 4 m_TargetDisplay: 0 --- !u!224 &755572874 @@ -11783,6 +11915,7 @@ RectTransform: - {fileID: 142983754} - {fileID: 1810834547} - {fileID: 1687435156} + - {fileID: 291061724} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -33201,9 +33334,9 @@ PrefabInstance: value: Fix System Center objectReference: {fileID: 0} - target: {fileID: 667196269251774960, guid: 95188b5d2a557274fb52febde14400b8, type: 3} - propertyPath: curState - value: 2 - objectReference: {fileID: 0} + propertyPath: sceneCamera + value: + objectReference: {fileID: 291061727} - target: {fileID: 4256475766480134775, guid: 95188b5d2a557274fb52febde14400b8, type: 3} propertyPath: m_LocalPosition.x value: 0 diff --git a/Assets/Scripts/FixSystemNew/BodyModule/OscilloscopeSystem.cs b/Assets/Scripts/FixSystemNew/BodyModule/OscilloscopeSystem.cs index 581cd8cb2..ed4ff4eb6 100644 --- a/Assets/Scripts/FixSystemNew/BodyModule/OscilloscopeSystem.cs +++ b/Assets/Scripts/FixSystemNew/BodyModule/OscilloscopeSystem.cs @@ -12,7 +12,6 @@ namespace AibisDream.FixSystem private TMP_Text _state; // 显示状态的TextMeshPro组件 private TMP_Text _screenText;// 显示消息的TextMeshPro组件 private SpriteButton _deepinButton; - private BodyModuleSystem _bodyModuleSystem; #endregion @@ -55,7 +54,7 @@ namespace AibisDream.FixSystem private void HandleDeepInButtonClick() { - _bodyModuleSystem.HandleDeepIn(); + FixSystemCenter.SystemDic.Get().HandleDeepIn(); } public void MessageBoxSetWarning() diff --git a/Assets/Scripts/FixSystemNew/FixSystemCenter.cs b/Assets/Scripts/FixSystemNew/FixSystemCenter.cs index 506a0d6e0..85db9836a 100644 --- a/Assets/Scripts/FixSystemNew/FixSystemCenter.cs +++ b/Assets/Scripts/FixSystemNew/FixSystemCenter.cs @@ -1,5 +1,6 @@ using AibisDream.Framework; using AibisDream.Kit; +using UnityEngine; namespace AibisDream.FixSystem { @@ -7,13 +8,18 @@ namespace AibisDream.FixSystem { public FixState CurState => StateMachine.CurState; + public Camera sceneCamera; + public override void OnSingletonInit() { SystemDic ??= new IOCContainer(); - + // TODO 这个回头要改 AudioManager.PlayAmb1Audio("amb_room"); + // 初始化场景组件 + InitScene(); + // 初始化状态机 StateMachine = new FixStateMachine(); StartCoroutine(StateMachine.SwitchState(FixState.Clinic)); @@ -21,10 +27,27 @@ namespace AibisDream.FixSystem public override void OnSingletonDestroy() { - GameLoopManager.Instance.StartCoroutine(StateMachine.QuitState()); + UnloadScene(); CameraKit.Instance.RemoveAllCam(); + GameLoopManager.Instance.StartCoroutine(StateMachine.QuitState()); SystemDic.Clear(); } + + private void InitScene() + { + if (sceneCamera) + { + CameraKit.Instance.AddUICamera(sceneCamera); + } + } + + private void UnloadScene() + { + if (sceneCamera) + { + CameraKit.Instance.RemoveUICamera(sceneCamera); + } + } #region 系统索引 diff --git a/Assets/Scripts/Framework/OtherKit/CameraKit.cs b/Assets/Scripts/Framework/OtherKit/CameraKit.cs index eca2599ba..294cd0a7b 100644 --- a/Assets/Scripts/Framework/OtherKit/CameraKit.cs +++ b/Assets/Scripts/Framework/OtherKit/CameraKit.cs @@ -8,6 +8,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 @@ -46,6 +47,25 @@ namespace AibisDream.Framework #region 相机信息注册 + /// + /// 添加UI相机 + /// + public void AddUICamera(Camera camera) + { + if (Camera.main && Camera.main.TryGetComponent(out var cameraData)) + { + cameraData.cameraStack.Add(camera); + } + } + + public void RemoveUICamera(Camera camera) + { + if (Camera.main && Camera.main.TryGetComponent(out var cameraData)) + { + cameraData.cameraStack.Remove(camera); + } + } + public void RegisterCamera(FixState camType, ICinemachineCamera virtualCamera) { _virtualCameraDict[camType] = virtualCamera;