From 64822595b39067e8ce67382200d0cb379c479846 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Fri, 12 Jun 2026 11:04:33 +0800 Subject: [PATCH] =?UTF-8?q?fix(player):=20=E8=A1=A5=E6=8C=82=20CheckpointR?= =?UTF-8?q?espawnHandler=E2=80=94=E2=80=94=E5=AD=98=E6=B4=BB=E5=9B=9E?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E7=82=B9=E9=93=BE=E8=B7=AF=E6=8E=A5=E9=80=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PlacePlayer 脚手架新增 CheckpointRespawnHandler 并自动绑定 EVT_CheckpointRespawn/EVT_FadeOutRequest/EVT_FadeInRequest; Player.prefab 同步补挂修正。此前 LethalTrap 存活路径 Raise 的 EVT_CheckpointRespawn 无任何监听者,玩家不会被传送回检查点。 Co-Authored-By: Claude Fable 5 --- Assets/_Game/Prefabs/Player/Player.prefab | 19 +++++++++++++++++-- .../Editor/Scene/SceneObjectPlacerTool.cs | 7 +++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/Assets/_Game/Prefabs/Player/Player.prefab b/Assets/_Game/Prefabs/Player/Player.prefab index 10944ee..a32b428 100644 --- a/Assets/_Game/Prefabs/Player/Player.prefab +++ b/Assets/_Game/Prefabs/Player/Player.prefab @@ -248,6 +248,7 @@ GameObject: - component: {fileID: 8116248334753210478} - component: {fileID: 2674139131311821727} - component: {fileID: 1348220184733719450} + - component: {fileID: 6289226623396459915} m_Layer: 9 m_Name: Player m_TagString: Player @@ -777,8 +778,22 @@ MonoBehaviour: serializedVersion: 2 m_Bits: 16777216 _inputReader: {fileID: 11400000, guid: 88fadef8bc554e04483edd7418d20aa2, type: 2} - _onShowInteractPrompt: {fileID: 11400000, guid: 18bb3dbe7d352dc4a9b62b13e068eb9d, type: 2} - _onHideInteractPrompt: {fileID: 11400000, guid: b8cfbee27c2493e4ea75b4158a74a7c4, type: 2} +--- !u!114 &6289226623396459915 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6834103521996502824} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7ca41f67644b6b843ba7ef65e78b13e5, type: 3} + m_Name: + m_EditorClassIdentifier: + _onCheckpointRespawn: {fileID: 11400000, guid: eef5aef659932dd448be6d91119082e6, type: 2} + _onFadeOutRequest: {fileID: 11400000, guid: a17901d6793dcf2409e2672ffb383208, type: 2} + _onFadeInRequest: {fileID: 11400000, guid: f8d520fe699782b4184ff72ce5200c25, type: 2} + _fadeHalfDuration: 0.2 --- !u!1001 &5247753868797769228 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Assets/_Game/Scripts/Editor/Scene/SceneObjectPlacerTool.cs b/Assets/_Game/Scripts/Editor/Scene/SceneObjectPlacerTool.cs index e40b545..46dada3 100644 --- a/Assets/_Game/Scripts/Editor/Scene/SceneObjectPlacerTool.cs +++ b/Assets/_Game/Scripts/Editor/Scene/SceneObjectPlacerTool.cs @@ -232,6 +232,13 @@ namespace BaseGames.Editor if (inputReader != null) AssignReference(interactDetector, "_inputReader", inputReader, report); + // ── 检查点回溯(LethalTrap 存活路径:淡出 → 传送至最近检查点 → 淡入)── + // 须与 Rigidbody2D 同节点(传送时直接写 rb.position)。 + CheckpointRespawnHandler checkpointRespawn = GetOrAddComponent(root); + AssignAsset(checkpointRespawn, "_onCheckpointRespawn", report, false, "EVT_CheckpointRespawn"); + AssignAsset(checkpointRespawn, "_onFadeOutRequest", report, false, "EVT_FadeOutRequest"); + AssignAsset(checkpointRespawn, "_onFadeInRequest", report, false, "EVT_FadeInRequest"); + if (animConfig == null) report.Add("★ 需创建并绑定:PlayerController._animConfig(PLY_PlayerAnimationConfig)"); if (statsConfig == null) report.Add("★ 需创建并绑定:PlayerStats._config(PlayerStatsSO)"); if (inputReader == null) report.Add("★ 需手动绑定:PlayerController._inputReader / FormController._input / SkillManager._input(InputReaderSO)");