feat: Enhance scene transition management and HUD scaffolding

- Added RequestTransition method to ISceneService for direct scene transition requests without needing Inspector SO references.
- Updated DoorTransition and RoomTransition to utilize the new RequestTransition method via ServiceLocator.
- Introduced SceneFadeController to manage scene fade effects during transitions, with event channel integration for fade requests.
- Created HUDScaffoldWizard to automate HUD Canvas setup, including various UI elements and event channel bindings.
- Updated assembly definitions to include necessary dependencies for new UI components.
- Added Streaming assets for budget configuration to optimize scene loading and memory management.
This commit is contained in:
2026-06-03 08:08:27 +08:00
parent d27ae9407d
commit 613f2a4d13
15 changed files with 1285 additions and 64 deletions

View File

@@ -281,6 +281,76 @@ AudioSource:
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
--- !u!1 &157732602
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 157732603}
- component: {fileID: 157732605}
- component: {fileID: 157732604}
m_Layer: 0
m_Name: SYS_RoomStreamingManager
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &157732603
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 157732602}
serializedVersion: 2
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: 162844601}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &157732604
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 157732602}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a6db86de2f8c90548ba7e185b9cd5df6, type: 3}
m_Name:
m_EditorClassIdentifier:
_streamingManagerRef: {fileID: 157732605}
_onFadeOutRequest: {fileID: 11400000, guid: a17901d6793dcf2409e2672ffb383208, type: 2}
_onFadeInRequest: {fileID: 11400000, guid: f8d520fe699782b4184ff72ce5200c25, type: 2}
_onRegionNameDisplay: {fileID: 0}
_onSceneWorldStateRestored: {fileID: 0}
_mapDatabase: {fileID: 0}
_budget: {fileID: 11400000, guid: cd50a6ced54f54a43bda5a4d39b7865e, type: 2}
--- !u!114 &157732605
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 157732602}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0c17eea5df8bd684599801eb7dd7c41f, type: 3}
m_Name:
m_EditorClassIdentifier:
_mapDatabase: {fileID: 0}
_budget: {fileID: 11400000, guid: cd50a6ced54f54a43bda5a4d39b7865e, type: 2}
_onRoomEntered: {fileID: 11400000, guid: 133c65f23b6631846ab619edb0e44708, type: 2}
_onRoomPreloaded: {fileID: 0}
_onRoomActivated: {fileID: 0}
_unitsPerGrid: 16
--- !u!1 &162844600
GameObject:
m_ObjectHideFlags: 0
@@ -322,6 +392,8 @@ Transform:
- {fileID: 225262501}
- {fileID: 737017261}
- {fileID: 1208346588}
- {fileID: 1151871939}
- {fileID: 157732603}
m_Father: {fileID: 1218230064}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &225262500
@@ -432,8 +504,8 @@ MonoBehaviour:
_sceneService: {fileID: 1321234353}
_eventChannelRegistry: {fileID: 750267177}
_saveManager: {fileID: 737017262}
_checkpointService: {fileID: 1308486565}
_primaryListener: {fileID: 0}
_checkpointService: {fileID: 1151871940}
_primaryListener: {fileID: 464414703}
--- !u!1 &307714525
GameObject:
m_ObjectHideFlags: 0
@@ -554,6 +626,176 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 307714525}
m_CullTransparentMesh: 1
--- !u!1 &315072829
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 315072830}
- component: {fileID: 315072836}
- component: {fileID: 315072835}
- component: {fileID: 315072834}
- component: {fileID: 315072833}
- component: {fileID: 315072832}
- component: {fileID: 315072831}
m_Layer: 0
m_Name: VCamA
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &315072830
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 315072829}
serializedVersion: 2
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: 537419888}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &315072831
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 315072829}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 886251e9a18ece04ea8e61686c173e1b, type: 3}
m_Name:
m_EditorClassIdentifier:
CameraDistance: 10
DeadZoneDepth: 0
Composition:
ScreenPosition: {x: 0, y: -0.15}
DeadZone:
Enabled: 1
Size: {x: 0.15, y: 0.05}
HardLimits:
Enabled: 0
Size: {x: 0.8, y: 0.8}
Offset: {x: 0, y: 0}
CenterOnActivate: 1
TargetOffset: {x: 0, y: 0, z: 0}
Damping: {x: 0.5, y: 0, z: 0}
Lookahead:
Enabled: 1
Time: 0.28
Smoothing: 5
IgnoreY: 1
--- !u!114 &315072832
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 315072829}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a12cbb2380ff137459b7ba80d492733f, type: 3}
m_Name:
m_EditorClassIdentifier:
_restScale: 0.25
_speedAtFullLookahead: 12
_speedSmoothing: 5
--- !u!114 &315072833
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 315072829}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: cb5a7225ab133e74b81d1f0ae22ccc77, type: 3}
m_Name:
m_EditorClassIdentifier:
_dampingDown: 0.08
_dampingUp: 0.65
--- !u!114 &315072834
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 315072829}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7e2e7849ca8d76f438c4b2899c9fb421, type: 3}
m_Name:
m_EditorClassIdentifier:
LockX: 0
LockY: 0
LockedX: 0
LockedY: 0
--- !u!114 &315072835
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 315072829}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4d75924d76b05344aa410607bc57db98, type: 3}
m_Name:
m_EditorClassIdentifier:
BoundingVolume: {fileID: 0}
SlowingDistance: 0
--- !u!114 &315072836
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 315072829}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f9dfa5b682dcd46bda6128250e975f58, type: 3}
m_Name:
m_EditorClassIdentifier:
Priority:
Enabled: 0
m_Value: 0
OutputChannel: 1
StandbyUpdate: 2
m_StreamingVersion: 20241001
m_LegacyPriority: 0
Target:
TrackingTarget: {fileID: 0}
LookAtTarget: {fileID: 0}
CustomLookAtTarget: 0
Lens:
FieldOfView: 40
OrthographicSize: 10
NearClipPlane: 0.1
FarClipPlane: 5000
Dutch: 0
ModeOverride: 0
PhysicalProperties:
GateFit: 2
SensorSize: {x: 21.946, y: 16.002}
LensShift: {x: 0, y: 0}
FocusDistance: 10
Iso: 200
ShutterSpeed: 0.005
Aperture: 16
BladeCount: 5
Curvature: {x: 2, y: 11}
BarrelClipping: 0.25
Anamorphism: 0
BlendHint: 0
--- !u!1 &320356782
GameObject:
m_ObjectHideFlags: 0
@@ -971,7 +1213,7 @@ Camera:
height: 1
near clip plane: 0.1
far clip plane: 5000
field of view: 10
field of view: 40
orthographic: 0
orthographic size: 10
m_Depth: 0
@@ -998,7 +1240,7 @@ Transform:
m_GameObject: {fileID: 464414701}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -18.954266, y: 5.5, z: -64}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
@@ -1080,6 +1322,8 @@ Transform:
- {fileID: 464414705}
- {fileID: 1838586610}
- {fileID: 1341315320}
- {fileID: 315072830}
- {fileID: 1852813069}
m_Father: {fileID: 1218230064}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &545025334
@@ -1255,6 +1499,54 @@ MonoBehaviour:
_onMapOpen: {fileID: 11400000, guid: b972e8c7aec9da34d80381e643d49cb2, type: 2}
_onCharmPanelOpen: {fileID: 0}
_onSpellSelectOpen: {fileID: 0}
--- !u!1 &712830947
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 712830948}
- component: {fileID: 712830949}
m_Layer: 0
m_Name: SYS_SceneFade
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &712830948
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 712830947}
serializedVersion: 2
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: 1810445798}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &712830949
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 712830947}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5e4fa87eedbe2f24db81bdf66714343f, type: 3}
m_Name:
m_EditorClassIdentifier:
_fadeOut: {fileID: 0}
_fadeIn: {fileID: 0}
_onFadeOutRequest: {fileID: 11400000, guid: a17901d6793dcf2409e2672ffb383208, type: 2}
_onFadeInRequest: {fileID: 11400000, guid: f8d520fe699782b4184ff72ce5200c25, type: 2}
--- !u!1 &737017260
GameObject:
m_ObjectHideFlags: 0
@@ -1728,6 +2020,51 @@ MonoBehaviour:
_onLoadingStarted: {fileID: 11400000, guid: 78de6bbfc7741ad47ad568ba0b65fde0, type: 2}
_onLoadingComplete: {fileID: 11400000, guid: 1e4580d266c4bd44c8b25a70d26608d3, type: 2}
_onLoadingProgressUpdated: {fileID: 11400000, guid: 2d366d52ee6a8214c8cd94d14e9ccd15, type: 2}
--- !u!1 &1151871938
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1151871939}
- component: {fileID: 1151871940}
m_Layer: 0
m_Name: CheckpointService
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1151871939
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1151871938}
serializedVersion: 2
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: 162844601}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1151871940
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1151871938}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 486e785d32d1c4c468a4eb0fd4cf1822, type: 3}
m_Name:
m_EditorClassIdentifier:
_onSceneLoaded: {fileID: 11400000, guid: ce0e5d2372599c74aabdac63c1620289, type: 2}
--- !u!1 &1189402268
GameObject:
m_ObjectHideFlags: 0
@@ -2958,6 +3295,7 @@ Transform:
- {fileID: 1758098875}
- {fileID: 1710356906}
- {fileID: 622211655}
- {fileID: 712830948}
m_Father: {fileID: 1218230064}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1838586609
@@ -3065,6 +3403,176 @@ MonoBehaviour:
_lensConfig: {fileID: 11400000, guid: 12fec951ce5cc3d499b00e38b5dfa14a, type: 2}
_onPlayerSpawned: {fileID: 11400000, guid: 7e2c7e614f6627b449a244ab44443adf, type: 2}
_showDebugOverlay: 0
--- !u!1 &1852813068
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1852813069}
- component: {fileID: 1852813075}
- component: {fileID: 1852813074}
- component: {fileID: 1852813073}
- component: {fileID: 1852813072}
- component: {fileID: 1852813071}
- component: {fileID: 1852813070}
m_Layer: 0
m_Name: VCamB
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1852813069
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1852813068}
serializedVersion: 2
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: 537419888}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1852813070
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1852813068}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 886251e9a18ece04ea8e61686c173e1b, type: 3}
m_Name:
m_EditorClassIdentifier:
CameraDistance: 10
DeadZoneDepth: 0
Composition:
ScreenPosition: {x: 0, y: -0.15}
DeadZone:
Enabled: 1
Size: {x: 0.15, y: 0.05}
HardLimits:
Enabled: 0
Size: {x: 0.8, y: 0.8}
Offset: {x: 0, y: 0}
CenterOnActivate: 1
TargetOffset: {x: 0, y: 0, z: 0}
Damping: {x: 0.5, y: 0, z: 0}
Lookahead:
Enabled: 1
Time: 0.28
Smoothing: 5
IgnoreY: 1
--- !u!114 &1852813071
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1852813068}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a12cbb2380ff137459b7ba80d492733f, type: 3}
m_Name:
m_EditorClassIdentifier:
_restScale: 0.25
_speedAtFullLookahead: 12
_speedSmoothing: 5
--- !u!114 &1852813072
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1852813068}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: cb5a7225ab133e74b81d1f0ae22ccc77, type: 3}
m_Name:
m_EditorClassIdentifier:
_dampingDown: 0.08
_dampingUp: 0.65
--- !u!114 &1852813073
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1852813068}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7e2e7849ca8d76f438c4b2899c9fb421, type: 3}
m_Name:
m_EditorClassIdentifier:
LockX: 0
LockY: 0
LockedX: 0
LockedY: 0
--- !u!114 &1852813074
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1852813068}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4d75924d76b05344aa410607bc57db98, type: 3}
m_Name:
m_EditorClassIdentifier:
BoundingVolume: {fileID: 0}
SlowingDistance: 0
--- !u!114 &1852813075
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1852813068}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f9dfa5b682dcd46bda6128250e975f58, type: 3}
m_Name:
m_EditorClassIdentifier:
Priority:
Enabled: 0
m_Value: 0
OutputChannel: 1
StandbyUpdate: 2
m_StreamingVersion: 20241001
m_LegacyPriority: 0
Target:
TrackingTarget: {fileID: 0}
LookAtTarget: {fileID: 0}
CustomLookAtTarget: 0
Lens:
FieldOfView: 40
OrthographicSize: 10
NearClipPlane: 0.1
FarClipPlane: 5000
Dutch: 0
ModeOverride: 0
PhysicalProperties:
GateFit: 2
SensorSize: {x: 21.946, y: 16.002}
LensShift: {x: 0, y: 0}
FocusDistance: 10
Iso: 200
ShutterSpeed: 0.005
Aperture: 16
BladeCount: 5
Curvature: {x: 2, y: 11}
BarrelClipping: 0.25
Anamorphism: 0
BlendHint: 0
--- !u!1 &1859511082
GameObject:
m_ObjectHideFlags: 0