Refactor event channels and update layer specifications
- Removed StatusEffectEventChannelSO and its associated meta file. - Updated CreateEventChannelAssets to handle new shield-related events. - Added CharmModule for managing charm assets in the DataHub. - Introduced CharmEventChannelSO for charm equipped/unequipped events. - Changed layer references from "Ground" to "Platform" in various scripts. - Updated documentation to reflect changes in layer specifications. - Created new event assets for ShieldBroken, ShieldRestored, StatusEffectApplied, and StatusEffectExpired.
This commit is contained in:
@@ -9,7 +9,7 @@ MonoBehaviour:
|
|||||||
m_GameObject: {fileID: 0}
|
m_GameObject: {fileID: 0}
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_EditorHideFlags: 0
|
m_EditorHideFlags: 0
|
||||||
m_Script: {fileID: 11500000, guid: 933f8f3ce17ee54409502057bd1a8138, type: 3}
|
m_Script: {fileID: 11500000, guid: e2aa7161466b28442acab31ae092166b, type: 3}
|
||||||
m_Name: EVT_StatusEffect
|
m_Name: EVT_StatusEffect
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ MonoBehaviour:
|
|||||||
m_GameObject: {fileID: 0}
|
m_GameObject: {fileID: 0}
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_EditorHideFlags: 0
|
m_EditorHideFlags: 0
|
||||||
m_Script: {fileID: 11500000, guid: 07c5881d0d5ca3c42949a79f40939c3e, type: 3}
|
m_Script: {fileID: 11500000, guid: 23dad55c2f7bcc54a92ed61cc6f27c5b, type: 3}
|
||||||
m_Name: EVT_EnemyDied
|
m_Name: EVT_EnemyDied
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
description:
|
description:
|
||||||
|
|||||||
15
Assets/_Game/Data/Events/Combat/EVT_ShieldBroken.asset
Normal file
15
Assets/_Game/Data/Events/Combat/EVT_ShieldBroken.asset
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 07c5881d0d5ca3c42949a79f40939c3e, type: 3}
|
||||||
|
m_Name: EVT_ShieldBroken
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
description:
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7a0c8af06b9f6cd43a91c5bebf16c02e
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
15
Assets/_Game/Data/Events/Combat/EVT_ShieldRestored.asset
Normal file
15
Assets/_Game/Data/Events/Combat/EVT_ShieldRestored.asset
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 07c5881d0d5ca3c42949a79f40939c3e, type: 3}
|
||||||
|
m_Name: EVT_ShieldRestored
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
description:
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 06d4a7d44ce8bb0499aabf79ba7c556c
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e2aa7161466b28442acab31ae092166b, type: 3}
|
||||||
|
m_Name: EVT_StatusEffectApplied
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
description:
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c997085e0266fa54b9fa0af69e233acf
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e2aa7161466b28442acab31ae092166b, type: 3}
|
||||||
|
m_Name: EVT_StatusEffectExpired
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
description:
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 22c7ddc89ed054845951143148cd3671
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
15
Assets/_Game/Data/Events/Player/EVT_FormChanged.asset
Normal file
15
Assets/_Game/Data/Events/Player/EVT_FormChanged.asset
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: ce6e33f4353535944a0d2573df0a08d4, type: 3}
|
||||||
|
m_Name: EVT_FormChanged
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
description:
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9e1af94c61bb1c04ebc829f3838714f4
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
15
Assets/_Game/Data/Events/Player/EVT_SkillSetChanged.asset
Normal file
15
Assets/_Game/Data/Events/Player/EVT_SkillSetChanged.asset
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 07c5881d0d5ca3c42949a79f40939c3e, type: 3}
|
||||||
|
m_Name: EVT_SkillSetChanged
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
description:
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 249630b7ebe7a094299413cc67c4f3d1
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -9,7 +9,7 @@ MonoBehaviour:
|
|||||||
m_GameObject: {fileID: 0}
|
m_GameObject: {fileID: 0}
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_EditorHideFlags: 0
|
m_EditorHideFlags: 0
|
||||||
m_Script: {fileID: 0}
|
m_Script: {fileID: 11500000, guid: 2700003909ad60e4ba4b04d06f97805e, type: 3}
|
||||||
m_Name: EVT_CharmEquipped
|
m_Name: EVT_CharmEquipped
|
||||||
m_EditorClassIdentifier: BaseGames.Equipment:BaseGames.Equipment:CharmEventChannelSO
|
m_EditorClassIdentifier:
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ MonoBehaviour:
|
|||||||
m_GameObject: {fileID: 0}
|
m_GameObject: {fileID: 0}
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_EditorHideFlags: 0
|
m_EditorHideFlags: 0
|
||||||
m_Script: {fileID: 0}
|
m_Script: {fileID: 11500000, guid: 2700003909ad60e4ba4b04d06f97805e, type: 3}
|
||||||
m_Name: EVT_CharmUnequipped
|
m_Name: EVT_CharmUnequipped
|
||||||
m_EditorClassIdentifier: BaseGames.Equipment:BaseGames.Equipment:CharmEventChannelSO
|
m_EditorClassIdentifier:
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 07c5881d0d5ca3c42949a79f40939c3e, type: 3}
|
||||||
|
m_Name: EVT_EquipmentChanged
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
description:
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 29e6d061ce1f5c84d97e7c922de612b5
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -1683,6 +1683,37 @@ MonoBehaviour:
|
|||||||
_noiseFrequency: 1
|
_noiseFrequency: 1
|
||||||
_dedicatedCamera: {fileID: 1927356012}
|
_dedicatedCamera: {fileID: 1927356012}
|
||||||
_dedicatedPriority: 20
|
_dedicatedPriority: 20
|
||||||
|
--- !u!1 &93002960
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 93002961}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: SkillHitBox_Slot
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &93002961
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 93002960}
|
||||||
|
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: 810054649}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1 &97891550
|
--- !u!1 &97891550
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -9585,6 +9616,37 @@ Transform:
|
|||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 975324245}
|
m_Father: {fileID: 975324245}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1 &499342000
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 499342001}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: '[WeaponSocket]'
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &499342001
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 499342000}
|
||||||
|
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: 810054649}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1 &501567083
|
--- !u!1 &501567083
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -9959,6 +10021,37 @@ PolygonCollider2D:
|
|||||||
- {x: -4.5, y: 2.5}
|
- {x: -4.5, y: 2.5}
|
||||||
- {x: -9, y: 2.5}
|
- {x: -9, y: 2.5}
|
||||||
m_UseDelaunayMesh: 0
|
m_UseDelaunayMesh: 0
|
||||||
|
--- !u!1 &515876610
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 515876611}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: CameraFollowTarget
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &515876611
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 515876610}
|
||||||
|
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: 810054649}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1 &522010460
|
--- !u!1 &522010460
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -14461,6 +14554,495 @@ Transform:
|
|||||||
- {fileID: 1652340852}
|
- {fileID: 1652340852}
|
||||||
m_Father: {fileID: 325293347}
|
m_Father: {fileID: 325293347}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1 &810054628
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 810054649}
|
||||||
|
- component: {fileID: 810054648}
|
||||||
|
- component: {fileID: 810054647}
|
||||||
|
- component: {fileID: 810054646}
|
||||||
|
- component: {fileID: 810054645}
|
||||||
|
- component: {fileID: 810054644}
|
||||||
|
- component: {fileID: 810054643}
|
||||||
|
- component: {fileID: 810054642}
|
||||||
|
- component: {fileID: 810054641}
|
||||||
|
- component: {fileID: 810054640}
|
||||||
|
- component: {fileID: 810054639}
|
||||||
|
- component: {fileID: 810054638}
|
||||||
|
- component: {fileID: 810054637}
|
||||||
|
- component: {fileID: 810054636}
|
||||||
|
- component: {fileID: 810054635}
|
||||||
|
- component: {fileID: 810054634}
|
||||||
|
- component: {fileID: 810054633}
|
||||||
|
- component: {fileID: 810054632}
|
||||||
|
- component: {fileID: 810054631}
|
||||||
|
- component: {fileID: 810054630}
|
||||||
|
- component: {fileID: 810054629}
|
||||||
|
m_Layer: 9
|
||||||
|
m_Name: Player
|
||||||
|
m_TagString: Player
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &810054629
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 810054628}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e20d2200567c4ca4d8fa1a047c7bbd58, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_movementConfig: {fileID: 11400000, guid: aaeed7ed77ef4834ab211f378120f275, type: 2}
|
||||||
|
_animConfig: {fileID: 11400000, guid: 01fef0a964bfffd478226e04bbe3aeef, type: 2}
|
||||||
|
_inputReader: {fileID: 11400000, guid: 88fadef8bc554e04483edd7418d20aa2, type: 2}
|
||||||
|
_formConfig: {fileID: 11400000, guid: 8f33c49c9bd20ac47a6867f1f19f24a9, type: 2}
|
||||||
|
_combat: {fileID: 810054641}
|
||||||
|
_formController: {fileID: 810054640}
|
||||||
|
_weaponManager: {fileID: 810054639}
|
||||||
|
_skillManager: {fileID: 810054638}
|
||||||
|
_springSystem: {fileID: 810054637}
|
||||||
|
_parrySystem: {fileID: 810054636}
|
||||||
|
_hurtBox: {fileID: 2035363631}
|
||||||
|
_shield: {fileID: 810054635}
|
||||||
|
_wallDetector: {fileID: 810054634}
|
||||||
|
_onPlayerDied: {fileID: 11400000, guid: 7e1624bde83886d40b32f43e84a65a75, type: 2}
|
||||||
|
_onPlayerSpawned: {fileID: 11400000, guid: 7e2c7e614f6627b449a244ab44443adf, type: 2}
|
||||||
|
_debugValidateTransitions: 1
|
||||||
|
_dbg_CurrentState:
|
||||||
|
_dbg_IsGrounded: 0
|
||||||
|
_dbg_AirJumpsLeft: 0
|
||||||
|
_dbg_CanDash: 0
|
||||||
|
_dbg_IsInvincible: 0
|
||||||
|
--- !u!114 &810054630
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 810054628}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 323fa3d8339022e4bbd37c12332f151a, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_jumpBufferDuration: 0.15
|
||||||
|
_attackBufferDuration: 0.12
|
||||||
|
_dashBufferDuration: 0.1
|
||||||
|
_dbg_JumpBuffer: 0
|
||||||
|
_dbg_AttackBuffer: 0
|
||||||
|
_dbg_DashBuffer: 0
|
||||||
|
--- !u!114 &810054631
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 810054628}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 708938b7c3d75b244abcbd30ed589461, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_onStatusEffectApplied: {fileID: 11400000, guid: c997085e0266fa54b9fa0af69e233acf, type: 2}
|
||||||
|
_onStatusEffectExpired: {fileID: 11400000, guid: 22c7ddc89ed054845951143148cd3671, type: 2}
|
||||||
|
--- !u!114 &810054632
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 810054628}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: fab214bcdee30844bb3399c3b487cffa, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
--- !u!114 &810054633
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 810054628}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 04d451c14acfa56429344271570fa468, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_config: {fileID: 11400000, guid: f167dd4c0f40ff7499127f917066994a, type: 2}
|
||||||
|
_charmCatalog: {fileID: 11400000, guid: 62b057558c311d649ba7d5d91633b544, type: 2}
|
||||||
|
_onCharmEquipped: {fileID: 11400000, guid: ee78daff0aae5d64786323b1924fa103, type: 2}
|
||||||
|
_onCharmUnequipped: {fileID: 11400000, guid: d0a080ccb93b4cb4e9a4cbe8e96a7007, type: 2}
|
||||||
|
_onEquipmentChanged: {fileID: 11400000, guid: 29e6d061ce1f5c84d97e7c922de612b5, type: 2}
|
||||||
|
_onAchievementNotchGranted: {fileID: 11400000, guid: 80a81891f339dce4096ac6ea88b3de84, type: 2}
|
||||||
|
--- !u!114 &810054634
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 810054628}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 03bafd68d1793e44f9650296d658a4aa, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_config: {fileID: 11400000, guid: aaeed7ed77ef4834ab211f378120f275, type: 2}
|
||||||
|
_wallLayer:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 8388608
|
||||||
|
--- !u!114 &810054635
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 810054628}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: f362045054d7c1945841c4ccbcb356e8, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_config: {fileID: 11400000, guid: 3550acd79ad72c743942cbacb3c25c97, type: 2}
|
||||||
|
_onShieldBrokenChannel: {fileID: 11400000, guid: 7a0c8af06b9f6cd43a91c5bebf16c02e, type: 2}
|
||||||
|
_onShieldRestoredChannel: {fileID: 11400000, guid: 06d4a7d44ce8bb0499aabf79ba7c556c, type: 2}
|
||||||
|
--- !u!114 &810054636
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 810054628}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 14872ec0b53eece49a121f13ca519009, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_config: {fileID: 11400000, guid: f65119f9e65b51b4db2b17a0ae3d0fd3, type: 2}
|
||||||
|
_onParrySuccess: {fileID: 11400000, guid: 076c05f6f5c5cf6459a804ed2e61dc1b, type: 2}
|
||||||
|
--- !u!114 &810054637
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 810054628}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 1f57bdff3327d2d478779d844b114c83, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_stats: {fileID: 810054643}
|
||||||
|
_onEnemyDied: {fileID: 11400000, guid: def849e2c5ec8204eae6b083b02307aa, type: 2}
|
||||||
|
--- !u!114 &810054638
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 810054628}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: fb39b928827b10245aeab5ea41f862a5, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_stats: {fileID: 810054643}
|
||||||
|
_animancer: {fileID: 810054645}
|
||||||
|
_input: {fileID: 11400000, guid: 88fadef8bc554e04483edd7418d20aa2, type: 2}
|
||||||
|
_formController: {fileID: 810054640}
|
||||||
|
_modifiers: {fileID: 810054632}
|
||||||
|
_skillSocket: {fileID: 93002961}
|
||||||
|
_formSkillSets: []
|
||||||
|
--- !u!114 &810054639
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 810054628}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 6620d87234b5a9b4c811905861cd32fd, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_formController: {fileID: 810054640}
|
||||||
|
_startingWeapon: {fileID: 0}
|
||||||
|
_weaponSocket: {fileID: 499342001}
|
||||||
|
--- !u!114 &810054640
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 810054628}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: cbcc6974256e3fb40879694b4bf2d2dc, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_config: {fileID: 11400000, guid: 8f33c49c9bd20ac47a6867f1f19f24a9, type: 2}
|
||||||
|
_input: {fileID: 11400000, guid: 88fadef8bc554e04483edd7418d20aa2, type: 2}
|
||||||
|
_onFormChanged: {fileID: 11400000, guid: 9e1af94c61bb1c04ebc829f3838714f4, type: 2}
|
||||||
|
_onSkillSetChanged: {fileID: 11400000, guid: 249630b7ebe7a094299413cc67c4f3d1, type: 2}
|
||||||
|
--- !u!114 &810054641
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 810054628}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 9d978725c6a901c4da85041223e2b0ee, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_weaponManager: {fileID: 810054639}
|
||||||
|
--- !u!114 &810054642
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 810054628}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 263a07a0eb148924cbcf284def379a3f, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_config: {fileID: 11400000, guid: aaeed7ed77ef4834ab211f378120f275, type: 2}
|
||||||
|
_groundCheck: {fileID: 1852300736}
|
||||||
|
_groundCheckSize: {x: 0.8, y: 0.05}
|
||||||
|
_groundLayer:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
_dbg_Position:
|
||||||
|
_dbg_VelocityX: 0
|
||||||
|
_dbg_VelocityY: 0
|
||||||
|
_dbg_IsGrounded: 0
|
||||||
|
_dbg_HasCoyoteTime: 0
|
||||||
|
_dbg_IsWallLeft: 0
|
||||||
|
_dbg_IsWallRight: 0
|
||||||
|
_dbg_CancelWindowOpen: 0
|
||||||
|
_dbg_FacingDirection: 0
|
||||||
|
--- !u!114 &810054643
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 810054628}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: edd28a350d3cebe46a72e7550ffb1b93, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_config: {fileID: 11400000, guid: eaaee0817c0cc9e449142241ad75827e, type: 2}
|
||||||
|
_onHPChanged: {fileID: 11400000, guid: b5a2264ba6cf6544ebc53a67b5074d89, type: 2}
|
||||||
|
_onMaxHPChanged: {fileID: 11400000, guid: 34f14924fad74884aac7b2bd6fbad649, type: 2}
|
||||||
|
_onSoulPowerChanged: {fileID: 11400000, guid: 3694bb359f4ba5f40a6cba067478578c, type: 2}
|
||||||
|
_onSpiritPowerChanged: {fileID: 11400000, guid: 0f20a330a4808d24e808e6978151dbc4, type: 2}
|
||||||
|
_onSpringChargesChanged: {fileID: 11400000, guid: bb26bdee697c4b64682cf30d02579ca4, type: 2}
|
||||||
|
_onLingZhuChanged: {fileID: 11400000, guid: c83ba0a4579d72c449930ee9c57318df, type: 2}
|
||||||
|
_onAbilityUnlocked: {fileID: 11400000, guid: a8b3a59db23ed8d48970b73c8c2e3092, type: 2}
|
||||||
|
_onDifficultyChanged: {fileID: 11400000, guid: 156874a2ffc17694e91e949abbf97fee, type: 2}
|
||||||
|
_dbg_HP:
|
||||||
|
_dbg_Soul:
|
||||||
|
_dbg_Spirit:
|
||||||
|
_dbg_Spring:
|
||||||
|
_dbg_IsInvincible: 0
|
||||||
|
_dbg_InvincibleTimer: 0
|
||||||
|
_dbg_GodMode: 0
|
||||||
|
_dbg_Abilities:
|
||||||
|
--- !u!212 &810054644
|
||||||
|
SpriteRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 810054628}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_CastShadows: 0
|
||||||
|
m_ReceiveShadows: 0
|
||||||
|
m_DynamicOccludee: 1
|
||||||
|
m_StaticShadowCaster: 0
|
||||||
|
m_MotionVectors: 1
|
||||||
|
m_LightProbeUsage: 1
|
||||||
|
m_ReflectionProbeUsage: 1
|
||||||
|
m_RayTracingMode: 0
|
||||||
|
m_RayTraceProcedural: 0
|
||||||
|
m_RenderingLayerMask: 1
|
||||||
|
m_RendererPriority: 0
|
||||||
|
m_Materials:
|
||||||
|
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
|
||||||
|
m_StaticBatchInfo:
|
||||||
|
firstSubMesh: 0
|
||||||
|
subMeshCount: 0
|
||||||
|
m_StaticBatchRoot: {fileID: 0}
|
||||||
|
m_ProbeAnchor: {fileID: 0}
|
||||||
|
m_LightProbeVolumeOverride: {fileID: 0}
|
||||||
|
m_ScaleInLightmap: 1
|
||||||
|
m_ReceiveGI: 1
|
||||||
|
m_PreserveUVs: 0
|
||||||
|
m_IgnoreNormalsForChartDetection: 0
|
||||||
|
m_ImportantGI: 0
|
||||||
|
m_StitchLightmapSeams: 1
|
||||||
|
m_SelectedEditorRenderState: 0
|
||||||
|
m_MinimumChartSize: 4
|
||||||
|
m_AutoUVMaxDistance: 0.5
|
||||||
|
m_AutoUVMaxAngle: 89
|
||||||
|
m_LightmapParameters: {fileID: 0}
|
||||||
|
m_SortingLayerID: 0
|
||||||
|
m_SortingLayer: 0
|
||||||
|
m_SortingOrder: 0
|
||||||
|
m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_FlipX: 0
|
||||||
|
m_FlipY: 0
|
||||||
|
m_DrawMode: 0
|
||||||
|
m_Size: {x: 1, y: 1}
|
||||||
|
m_AdaptiveModeThreshold: 0.5
|
||||||
|
m_SpriteTileMode: 0
|
||||||
|
m_WasSpriteAssigned: 1
|
||||||
|
m_MaskInteraction: 0
|
||||||
|
m_SpriteSortPoint: 0
|
||||||
|
--- !u!114 &810054645
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 810054628}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 0ad50f81b1d25c441943c37a89ba23f6, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_Animator: {fileID: 810054646}
|
||||||
|
_Transitions: {fileID: 0}
|
||||||
|
_ActionOnDisable: 0
|
||||||
|
--- !u!95 &810054646
|
||||||
|
Animator:
|
||||||
|
serializedVersion: 5
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 810054628}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_Avatar: {fileID: 0}
|
||||||
|
m_Controller: {fileID: 0}
|
||||||
|
m_CullingMode: 0
|
||||||
|
m_UpdateMode: 0
|
||||||
|
m_ApplyRootMotion: 0
|
||||||
|
m_LinearVelocityBlending: 0
|
||||||
|
m_StabilizeFeet: 0
|
||||||
|
m_WarningMessage:
|
||||||
|
m_HasTransformHierarchy: 1
|
||||||
|
m_AllowConstantClipSamplingOptimization: 1
|
||||||
|
m_KeepAnimatorStateOnDisable: 0
|
||||||
|
m_WriteDefaultValuesOnDisable: 0
|
||||||
|
--- !u!61 &810054647
|
||||||
|
BoxCollider2D:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 810054628}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_Density: 1
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_IncludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_ExcludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_LayerOverridePriority: 0
|
||||||
|
m_ForceSendLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_ForceReceiveLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_ContactCaptureLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_CallbackLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_IsTrigger: 0
|
||||||
|
m_UsedByEffector: 0
|
||||||
|
m_UsedByComposite: 0
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
m_SpriteTilingProperty:
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
oldSize: {x: 1, y: 1}
|
||||||
|
newSize: {x: 1, y: 1}
|
||||||
|
adaptiveTilingThreshold: 0.5
|
||||||
|
drawMode: 0
|
||||||
|
adaptiveTiling: 0
|
||||||
|
m_AutoTiling: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Size: {x: 1, y: 1}
|
||||||
|
m_EdgeRadius: 0
|
||||||
|
--- !u!50 &810054648
|
||||||
|
Rigidbody2D:
|
||||||
|
serializedVersion: 4
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 810054628}
|
||||||
|
m_BodyType: 0
|
||||||
|
m_Simulated: 1
|
||||||
|
m_UseFullKinematicContacts: 0
|
||||||
|
m_UseAutoMass: 0
|
||||||
|
m_Mass: 1
|
||||||
|
m_LinearDrag: 0
|
||||||
|
m_AngularDrag: 0.05
|
||||||
|
m_GravityScale: 2
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_IncludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_ExcludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_Interpolate: 1
|
||||||
|
m_SleepingMode: 1
|
||||||
|
m_CollisionDetection: 1
|
||||||
|
m_Constraints: 4
|
||||||
|
--- !u!4 &810054649
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 810054628}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: -23.547367, y: 3.988164, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 2035363633}
|
||||||
|
- {fileID: 499342001}
|
||||||
|
- {fileID: 1852300736}
|
||||||
|
- {fileID: 93002961}
|
||||||
|
- {fileID: 515876611}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1 &811095057
|
--- !u!1 &811095057
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -29293,6 +29875,37 @@ Transform:
|
|||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 2015266179}
|
m_Father: {fileID: 2015266179}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1 &1852300735
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1852300736}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: GroundCheck
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &1852300736
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1852300735}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: -0.75, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 810054649}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1 &1855767594
|
--- !u!1 &1855767594
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -32466,6 +33079,98 @@ Transform:
|
|||||||
m_CorrespondingSourceObject: {fileID: 7501110767542530711, guid: e9d9216d17e7b684096c94e8c347d46f, type: 3}
|
m_CorrespondingSourceObject: {fileID: 7501110767542530711, guid: e9d9216d17e7b684096c94e8c347d46f, type: 3}
|
||||||
m_PrefabInstance: {fileID: 1627895894}
|
m_PrefabInstance: {fileID: 1627895894}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
--- !u!1 &2035363630
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 2035363633}
|
||||||
|
- component: {fileID: 2035363632}
|
||||||
|
- component: {fileID: 2035363631}
|
||||||
|
m_Layer: 15
|
||||||
|
m_Name: HurtBox
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &2035363631
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2035363630}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: d7b7a233d7f70aa4f86b473412b826de, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_onDamageDealt: {fileID: 0}
|
||||||
|
_onHitConfirmed: {fileID: 11400000, guid: a67d56f5124e0db4f98f326c74be8091, type: 2}
|
||||||
|
--- !u!61 &2035363632
|
||||||
|
BoxCollider2D:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2035363630}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_Density: 1
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_IncludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_ExcludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_LayerOverridePriority: 0
|
||||||
|
m_ForceSendLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_ForceReceiveLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_ContactCaptureLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_CallbackLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_IsTrigger: 1
|
||||||
|
m_UsedByEffector: 0
|
||||||
|
m_UsedByComposite: 0
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
m_SpriteTilingProperty:
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
oldSize: {x: 0, y: 0}
|
||||||
|
newSize: {x: 0, y: 0}
|
||||||
|
adaptiveTilingThreshold: 0
|
||||||
|
drawMode: 0
|
||||||
|
adaptiveTiling: 0
|
||||||
|
m_AutoTiling: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Size: {x: 1, y: 1}
|
||||||
|
m_EdgeRadius: 0
|
||||||
|
--- !u!4 &2035363633
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2035363630}
|
||||||
|
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: 810054649}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1 &2043241451
|
--- !u!1 &2043241451
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -34099,3 +34804,4 @@ SceneRoots:
|
|||||||
- {fileID: 1865796631}
|
- {fileID: 1865796631}
|
||||||
- {fileID: 1354690328}
|
- {fileID: 1354690328}
|
||||||
- {fileID: 783576435}
|
- {fileID: 783576435}
|
||||||
|
- {fileID: 810054649}
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace BaseGames.Core.Events
|
|
||||||
{
|
|
||||||
[CreateAssetMenu(menuName = "BaseGames/Events/StatusEffect")]
|
|
||||||
public class StatusEffectEventChannelSO : BaseEventChannelSO<StatusEffectType> { }
|
|
||||||
}
|
|
||||||
@@ -2,6 +2,7 @@ using UnityEngine;
|
|||||||
using UnityEditor;
|
using UnityEditor;
|
||||||
using BaseGames.Core.Events;
|
using BaseGames.Core.Events;
|
||||||
using BaseGames.Combat;
|
using BaseGames.Combat;
|
||||||
|
using BaseGames.Combat.StatusEffects;
|
||||||
using BaseGames.Equipment;
|
using BaseGames.Equipment;
|
||||||
using BaseGames.Parry;
|
using BaseGames.Parry;
|
||||||
using BaseGames.Player;
|
using BaseGames.Player;
|
||||||
@@ -54,6 +55,8 @@ namespace BaseGames.Editor
|
|||||||
CreateAsset<VoidEventChannelSO> ("Combat", "EVT_CheckpointRespawn");
|
CreateAsset<VoidEventChannelSO> ("Combat", "EVT_CheckpointRespawn");
|
||||||
CreateAsset<StatusEffectEventChannelSO> ("Combat", "EVT_StatusEffectApplied");
|
CreateAsset<StatusEffectEventChannelSO> ("Combat", "EVT_StatusEffectApplied");
|
||||||
CreateAsset<StatusEffectEventChannelSO> ("Combat", "EVT_StatusEffectExpired");
|
CreateAsset<StatusEffectEventChannelSO> ("Combat", "EVT_StatusEffectExpired");
|
||||||
|
CreateAsset<VoidEventChannelSO> ("Combat", "EVT_ShieldBroken");
|
||||||
|
CreateAsset<VoidEventChannelSO> ("Combat", "EVT_ShieldRestored");
|
||||||
|
|
||||||
// ── Boss ──────────────────────────────────────────────────────────
|
// ── Boss ──────────────────────────────────────────────────────────
|
||||||
CreateAsset<BossSkillEventChannelSO> ("Boss", "EVT_BossSkill");
|
CreateAsset<BossSkillEventChannelSO> ("Boss", "EVT_BossSkill");
|
||||||
@@ -180,6 +183,13 @@ namespace BaseGames.Editor
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 存在但类型不匹配(如旧版残留),先删除再重建
|
||||||
|
if (AssetDatabase.LoadMainAssetAtPath(fullPath) != null)
|
||||||
|
{
|
||||||
|
AssetDatabase.DeleteAsset(fullPath);
|
||||||
|
Debug.Log($"[CreateEventChannelAssets] 已删除旧类型资产: {fullPath}");
|
||||||
|
}
|
||||||
|
|
||||||
T asset = ScriptableObject.CreateInstance<T>();
|
T asset = ScriptableObject.CreateInstance<T>();
|
||||||
AssetDatabase.CreateAsset(asset, fullPath);
|
AssetDatabase.CreateAsset(asset, fullPath);
|
||||||
Debug.Log($"[CreateEventChannelAssets] 已创建: {fullPath}");
|
Debug.Log($"[CreateEventChannelAssets] 已创建: {fullPath}");
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ namespace BaseGames.Editor
|
|||||||
_modules.Add(new EnemyModule());
|
_modules.Add(new EnemyModule());
|
||||||
_modules.Add(new FormModule());
|
_modules.Add(new FormModule());
|
||||||
_modules.Add(new BossSkillModule());
|
_modules.Add(new BossSkillModule());
|
||||||
|
_modules.Add(new CharmModule());
|
||||||
}
|
}
|
||||||
|
|
||||||
// ── 布局 ─────────────────────────────────────────────────────────────
|
// ── 布局 ─────────────────────────────────────────────────────────────
|
||||||
|
|||||||
211
Assets/_Game/Scripts/Editor/Modules/CharmModule.cs
Normal file
211
Assets/_Game/Scripts/Editor/Modules/CharmModule.cs
Normal file
@@ -0,0 +1,211 @@
|
|||||||
|
using System;
|
||||||
|
using UnityEditor;
|
||||||
|
using UnityEditor.UIElements;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UIElements;
|
||||||
|
using BaseGames.Equipment;
|
||||||
|
|
||||||
|
namespace BaseGames.Editor.Modules
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// DataHub 护符模块 —— Tab 切换管理 CharmCatalogSO(目录)和 CharmSO(护符)资产。
|
||||||
|
/// </summary>
|
||||||
|
public class CharmModule : IDataModule
|
||||||
|
{
|
||||||
|
private const string CharmFolder = "Assets/_Game/Data/Progression/Charms";
|
||||||
|
private const string CatalogPrefix = "CHM_Catalog";
|
||||||
|
private const string CharmPrefix = "CHM_";
|
||||||
|
|
||||||
|
public string ModuleId => "charm";
|
||||||
|
public string DisplayName => "护符";
|
||||||
|
public string IconName => null;
|
||||||
|
|
||||||
|
private int _activeTab = 0; // 0 = 目录, 1 = 护符
|
||||||
|
|
||||||
|
private SoListPane<CharmCatalogSO> _catalogPane;
|
||||||
|
private SoListPane<CharmSO> _charmPane;
|
||||||
|
private Action<UnityEngine.Object> _onSelected;
|
||||||
|
|
||||||
|
private DetailHeader _header;
|
||||||
|
private CharmCatalogSO _selectedCatalog;
|
||||||
|
private CharmSO _selectedCharm;
|
||||||
|
|
||||||
|
public void Initialize()
|
||||||
|
{
|
||||||
|
_catalogPane = new SoListPane<CharmCatalogSO>(CharmFolder, CatalogPrefix);
|
||||||
|
_catalogPane.SelectionChanged = s => { _selectedCatalog = s; _onSelected?.Invoke(s); };
|
||||||
|
|
||||||
|
_charmPane = new SoListPane<CharmSO>(CharmFolder, CharmPrefix,
|
||||||
|
c => $"{c.notchCost}格");
|
||||||
|
_charmPane.SelectionChanged = s => { _selectedCharm = s; _onSelected?.Invoke(s); };
|
||||||
|
}
|
||||||
|
|
||||||
|
public void BuildListPane(VisualElement container, Action<UnityEngine.Object> onSelected)
|
||||||
|
{
|
||||||
|
_onSelected = onSelected;
|
||||||
|
container.style.flexDirection = FlexDirection.Column;
|
||||||
|
|
||||||
|
// Tab bar
|
||||||
|
var tabBar = new VisualElement();
|
||||||
|
tabBar.style.flexDirection = FlexDirection.Row;
|
||||||
|
tabBar.style.borderBottomWidth = 1;
|
||||||
|
tabBar.style.borderBottomColor = new StyleColor(new Color(0.5f, 0.5f, 0.5f, 0.3f));
|
||||||
|
container.Add(tabBar);
|
||||||
|
|
||||||
|
var btnCatalog = BuildTabBtn("目录", 0, tabBar);
|
||||||
|
var btnCharms = BuildTabBtn("护符", 1, tabBar);
|
||||||
|
|
||||||
|
var listArea = new VisualElement();
|
||||||
|
listArea.style.flexGrow = 1;
|
||||||
|
container.Add(listArea);
|
||||||
|
|
||||||
|
var tabs = new[] { btnCatalog, btnCharms };
|
||||||
|
ShowTab(0, listArea, tabs);
|
||||||
|
btnCatalog.clicked += () => ShowTab(0, listArea, tabs);
|
||||||
|
btnCharms.clicked += () => ShowTab(1, listArea, tabs);
|
||||||
|
|
||||||
|
_catalogPane.Refresh();
|
||||||
|
_charmPane.Refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void BuildDetailPane(VisualElement container, UnityEngine.Object selected)
|
||||||
|
{
|
||||||
|
_header = new DetailHeader();
|
||||||
|
_header.SetAsset(selected);
|
||||||
|
_header.RenameRequested += name => OnRenameRequested(selected, name);
|
||||||
|
container.Add(_header);
|
||||||
|
|
||||||
|
if (selected == null) return;
|
||||||
|
|
||||||
|
if (selected is CharmCatalogSO catalog)
|
||||||
|
{
|
||||||
|
container.Add(BuildCatalogActionBar(catalog));
|
||||||
|
container.Add(SkillModule.MakeDivider());
|
||||||
|
container.Add(new InspectorElement(catalog));
|
||||||
|
}
|
||||||
|
else if (selected is CharmSO charm)
|
||||||
|
{
|
||||||
|
container.Add(BuildCharmCard(charm));
|
||||||
|
container.Add(BuildCharmActionBar(charm));
|
||||||
|
container.Add(SkillModule.MakeDivider());
|
||||||
|
container.Add(new InspectorElement(charm));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnActivated()
|
||||||
|
{
|
||||||
|
_catalogPane?.Refresh();
|
||||||
|
_charmPane?.Refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
// ── Tab UI ────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
private Button BuildTabBtn(string text, int tabIdx, VisualElement bar)
|
||||||
|
{
|
||||||
|
var btn = new Button { text = text };
|
||||||
|
btn.style.flexGrow = 1;
|
||||||
|
btn.style.paddingTop = 5;
|
||||||
|
btn.style.paddingBottom = 5;
|
||||||
|
btn.style.borderTopLeftRadius = 0;
|
||||||
|
btn.style.borderTopRightRadius = 0;
|
||||||
|
btn.style.borderBottomLeftRadius = 0;
|
||||||
|
btn.style.borderBottomRightRadius = 0;
|
||||||
|
btn.style.borderLeftWidth = 0;
|
||||||
|
btn.style.borderRightWidth = 0;
|
||||||
|
btn.style.borderTopWidth = 0;
|
||||||
|
btn.style.borderBottomWidth = 0;
|
||||||
|
btn.style.backgroundColor = new StyleColor(Color.clear);
|
||||||
|
btn.userData = tabIdx;
|
||||||
|
bar.Add(btn);
|
||||||
|
return btn;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ShowTab(int tab, VisualElement area, Button[] tabBtns)
|
||||||
|
{
|
||||||
|
_activeTab = tab;
|
||||||
|
area.Clear();
|
||||||
|
for (int i = 0; i < tabBtns.Length; i++)
|
||||||
|
{
|
||||||
|
if (i == tab)
|
||||||
|
{
|
||||||
|
tabBtns[i].style.borderBottomWidth = 2;
|
||||||
|
tabBtns[i].style.borderBottomColor = new StyleColor(new Color(0.4f, 0.65f, 1f, 1f));
|
||||||
|
tabBtns[i].style.opacity = 1f;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tabBtns[i].style.borderBottomWidth = 0;
|
||||||
|
tabBtns[i].style.opacity = 0.65f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (tab == 0) { _catalogPane.style.flexGrow = 1; area.Add(_catalogPane); }
|
||||||
|
else { _charmPane.style.flexGrow = 1; area.Add(_charmPane); }
|
||||||
|
}
|
||||||
|
|
||||||
|
// ── 重命名 ────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
private void OnRenameRequested(UnityEngine.Object asset, string newName)
|
||||||
|
{
|
||||||
|
var (ok, err) = AssetOperations.Rename(asset, newName);
|
||||||
|
if (!ok) EditorUtility.DisplayDialog("重命名失败", err, "确定");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_header.SetAsset(asset);
|
||||||
|
if (_activeTab == 0) _catalogPane.Invalidate();
|
||||||
|
else _charmPane.Invalidate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ── CharmCatalogSO 详情 ───────────────────────────────────────────────
|
||||||
|
|
||||||
|
private VisualElement BuildCatalogActionBar(CharmCatalogSO catalog)
|
||||||
|
{
|
||||||
|
var bar = SkillModule.MakeActionBar();
|
||||||
|
new Button(() => { EditorGUIUtility.PingObject(catalog); Selection.activeObject = catalog; })
|
||||||
|
{ text = "定位" }.AlsoAddTo(bar);
|
||||||
|
return bar;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ── CharmSO 详情 ──────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
private static VisualElement BuildCharmCard(CharmSO c)
|
||||||
|
{
|
||||||
|
var card = SkillModule.MakeCard();
|
||||||
|
SkillModule.AddChip(card, "ID", string.IsNullOrEmpty(c.charmId) ? "-" : c.charmId);
|
||||||
|
SkillModule.AddChip(card, "格数", $"{c.notchCost}");
|
||||||
|
SkillModule.AddChip(card, "效果数", $"{c.effects?.Count ?? 0}");
|
||||||
|
if (c.isUnique)
|
||||||
|
SkillModule.AddChip(card, "限定", "唯一");
|
||||||
|
return card;
|
||||||
|
}
|
||||||
|
|
||||||
|
private VisualElement BuildCharmActionBar(CharmSO charm)
|
||||||
|
{
|
||||||
|
var bar = SkillModule.MakeActionBar();
|
||||||
|
new Button(() => { EditorGUIUtility.PingObject(charm); Selection.activeObject = charm; })
|
||||||
|
{ text = "定位" }.AlsoAddTo(bar);
|
||||||
|
new Button(() => { var c = AssetOperations.Clone(charm, CharmFolder); if (c != null) _charmPane.Refresh(c); })
|
||||||
|
{ text = "克隆..." }.AlsoAddTo(bar);
|
||||||
|
var del = new Button(() => { if (AssetOperations.Delete(charm)) _charmPane.Refresh(null); }) { text = "删除" };
|
||||||
|
ApplyDeleteStyle(del);
|
||||||
|
del.AlsoAddTo(bar);
|
||||||
|
return bar;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ── 共用 ─────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
private static void ApplyDeleteStyle(Button btn)
|
||||||
|
{
|
||||||
|
var c = new StyleColor(new Color(0.8f, 0.3f, 0.3f, 0.6f));
|
||||||
|
btn.style.borderLeftColor = c;
|
||||||
|
btn.style.borderRightColor = c;
|
||||||
|
btn.style.borderTopColor = c;
|
||||||
|
btn.style.borderBottomColor = c;
|
||||||
|
btn.style.borderLeftWidth = 1;
|
||||||
|
btn.style.borderRightWidth = 1;
|
||||||
|
btn.style.borderTopWidth = 1;
|
||||||
|
btn.style.borderBottomWidth = 1;
|
||||||
|
btn.style.marginLeft = 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 933f8f3ce17ee54409502057bd1a8138
|
guid: e5ccd6c2a03bdd144b0a6351e2b90803
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
@@ -95,7 +95,7 @@ namespace BaseGames.Editor
|
|||||||
Transform groundCheckT = GetOrCreateChild(root.transform, "GroundCheck");
|
Transform groundCheckT = GetOrCreateChild(root.transform, "GroundCheck");
|
||||||
groundCheckT.localPosition = new Vector3(0f, -0.75f, 0f);
|
groundCheckT.localPosition = new Vector3(0f, -0.75f, 0f);
|
||||||
AssignReference(playerMovement, "_groundCheck", groundCheckT, report);
|
AssignReference(playerMovement, "_groundCheck", groundCheckT, report);
|
||||||
AssignLayerMask(playerMovement, "_groundLayer", "Ground", report);
|
AssignLayerMask(playerMovement, "_groundLayer", "Platform", report);
|
||||||
|
|
||||||
// ── SkillHitBox_Slot 子节点(技能 HitBox 实例化挂点)────────────────
|
// ── SkillHitBox_Slot 子节点(技能 HitBox 实例化挂点)────────────────
|
||||||
Transform skillSocketT = GetOrCreateChild(root.transform, "SkillHitBox_Slot");
|
Transform skillSocketT = GetOrCreateChild(root.transform, "SkillHitBox_Slot");
|
||||||
@@ -129,11 +129,11 @@ namespace BaseGames.Editor
|
|||||||
AssignReference(skillManager, "_modifiers", GetOrAddComponent<SkillModifierRegistry>(root), report);
|
AssignReference(skillManager, "_modifiers", GetOrAddComponent<SkillModifierRegistry>(root), report);
|
||||||
AssignReference(skillManager, "_skillSocket", skillSocketT, report);
|
AssignReference(skillManager, "_skillSocket", skillSocketT, report);
|
||||||
|
|
||||||
// PlayerWallDetector 墙壁检测层(Wall + Ground 组合)
|
// PlayerWallDetector 墙壁检测层(Wall + Platform 组合)
|
||||||
{
|
{
|
||||||
int wallMask = 0;
|
int wallMask = 0;
|
||||||
int wallL = LayerMask.NameToLayer("Wall");
|
int wallL = LayerMask.NameToLayer("Wall");
|
||||||
int groundL = LayerMask.NameToLayer("Ground");
|
int groundL = LayerMask.NameToLayer("Platform");
|
||||||
if (wallL != -1) wallMask |= 1 << wallL;
|
if (wallL != -1) wallMask |= 1 << wallL;
|
||||||
if (groundL != -1) wallMask |= 1 << groundL;
|
if (groundL != -1) wallMask |= 1 << groundL;
|
||||||
if (wallMask != 0)
|
if (wallMask != 0)
|
||||||
@@ -143,7 +143,7 @@ namespace BaseGames.Editor
|
|||||||
if (wsp != null) { wsp.intValue = wallMask; wso.ApplyModifiedPropertiesWithoutUndo(); }
|
if (wsp != null) { wsp.intValue = wallMask; wso.ApplyModifiedPropertiesWithoutUndo(); }
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
report.Add("★ Layer 'Wall'/'Ground' 不存在,PlayerWallDetector._wallLayer 未赋值。");
|
report.Add("★ Layer 'Wall'/'Platform' 不存在,PlayerWallDetector._wallLayer 未赋值。");
|
||||||
}
|
}
|
||||||
|
|
||||||
// ── 事件频道(可选,缺失时跳过) ───────────────────────────────────
|
// ── 事件频道(可选,缺失时跳过) ───────────────────────────────────
|
||||||
@@ -169,6 +169,8 @@ namespace BaseGames.Editor
|
|||||||
AssignAsset(equipmentManager, "_onAchievementNotchGranted", report, false, "EVT_AchievementNotchGranted");
|
AssignAsset(equipmentManager, "_onAchievementNotchGranted", report, false, "EVT_AchievementNotchGranted");
|
||||||
AssignAsset(statusEffectManager, "_onStatusEffectApplied", report, false, "EVT_StatusEffectApplied");
|
AssignAsset(statusEffectManager, "_onStatusEffectApplied", report, false, "EVT_StatusEffectApplied");
|
||||||
AssignAsset(statusEffectManager, "_onStatusEffectExpired", report, false, "EVT_StatusEffectExpired");
|
AssignAsset(statusEffectManager, "_onStatusEffectExpired", report, false, "EVT_StatusEffectExpired");
|
||||||
|
AssignAsset(shield, "_onShieldBrokenChannel", report, false, "EVT_ShieldBroken");
|
||||||
|
AssignAsset(shield, "_onShieldRestoredChannel", report, false, "EVT_ShieldRestored");
|
||||||
|
|
||||||
// ── Config SO 自动查找(资产存在时自动绑定)──────────────────────
|
// ── Config SO 自动查找(资产存在时自动绑定)──────────────────────
|
||||||
Object statsConfig = FindFirstAsset("PLY_PlayerStats");
|
Object statsConfig = FindFirstAsset("PLY_PlayerStats");
|
||||||
@@ -178,7 +180,7 @@ namespace BaseGames.Editor
|
|||||||
Object shieldConfig = FindFirstAsset("PLY_ShieldConfig");
|
Object shieldConfig = FindFirstAsset("PLY_ShieldConfig");
|
||||||
Object inputReader = FindFirstAsset("InputReader");
|
Object inputReader = FindFirstAsset("InputReader");
|
||||||
Object equipmentConfig = FindFirstAsset("PLY_EquipmentConfig");
|
Object equipmentConfig = FindFirstAsset("PLY_EquipmentConfig");
|
||||||
Object charmCatalog = FindFirstAsset("PLY_CharmCatalog");
|
Object charmCatalog = FindFirstAsset("CHM_Catalog");
|
||||||
Object animConfig = FindFirstAsset("PLY_PlayerAnimationConfig");
|
Object animConfig = FindFirstAsset("PLY_PlayerAnimationConfig");
|
||||||
|
|
||||||
if (statsConfig != null) AssignReference(playerStats, "_config", statsConfig, report);
|
if (statsConfig != null) AssignReference(playerStats, "_config", statsConfig, report);
|
||||||
@@ -752,7 +754,7 @@ namespace BaseGames.Editor
|
|||||||
GameObject go = new GameObject("GroundPlatform");
|
GameObject go = new GameObject("GroundPlatform");
|
||||||
Undo.RegisterCreatedObjectUndo(go, "Place Ground Platform");
|
Undo.RegisterCreatedObjectUndo(go, "Place Ground Platform");
|
||||||
go.transform.position = GetDropPosition();
|
go.transform.position = GetDropPosition();
|
||||||
SetLayer(go, "Ground", report);
|
SetLayer(go, "Platform", report);
|
||||||
|
|
||||||
// 2D Sprite:用 localScale 设定尺寸,让 SpriteRenderer 和 BoxCollider2D 同步缩放
|
// 2D Sprite:用 localScale 设定尺寸,让 SpriteRenderer 和 BoxCollider2D 同步缩放
|
||||||
go.transform.localScale = new Vector3(8f, 0.5f, 1f);
|
go.transform.localScale = new Vector3(8f, 0.5f, 1f);
|
||||||
@@ -774,7 +776,7 @@ namespace BaseGames.Editor
|
|||||||
GameObject go = new GameObject("MovingPlatform");
|
GameObject go = new GameObject("MovingPlatform");
|
||||||
Undo.RegisterCreatedObjectUndo(go, "Place Moving Platform");
|
Undo.RegisterCreatedObjectUndo(go, "Place Moving Platform");
|
||||||
go.transform.position = GetDropPosition();
|
go.transform.position = GetDropPosition();
|
||||||
SetLayer(go, "Ground", report);
|
SetLayer(go, "Platform", report);
|
||||||
|
|
||||||
Rigidbody2D rb = GetOrAddComponent<Rigidbody2D>(go);
|
Rigidbody2D rb = GetOrAddComponent<Rigidbody2D>(go);
|
||||||
rb.bodyType = RigidbodyType2D.Kinematic;
|
rb.bodyType = RigidbodyType2D.Kinematic;
|
||||||
@@ -820,7 +822,7 @@ namespace BaseGames.Editor
|
|||||||
GetOrAddComponent<Grid>(gridGo);
|
GetOrAddComponent<Grid>(gridGo);
|
||||||
|
|
||||||
GameObject groundGo = GetOrCreateChild(gridGo.transform, "Ground").gameObject;
|
GameObject groundGo = GetOrCreateChild(gridGo.transform, "Ground").gameObject;
|
||||||
SetLayer(groundGo, "Ground", report);
|
SetLayer(groundGo, "Platform", report);
|
||||||
GetOrAddComponent<Tilemap>(groundGo);
|
GetOrAddComponent<Tilemap>(groundGo);
|
||||||
GetOrAddComponent<TilemapRenderer>(groundGo);
|
GetOrAddComponent<TilemapRenderer>(groundGo);
|
||||||
TilemapCollider2D tilemapCollider = GetOrAddComponent<TilemapCollider2D>(groundGo);
|
TilemapCollider2D tilemapCollider = GetOrAddComponent<TilemapCollider2D>(groundGo);
|
||||||
@@ -859,7 +861,7 @@ namespace BaseGames.Editor
|
|||||||
GameObject go = new GameObject("Obstacle");
|
GameObject go = new GameObject("Obstacle");
|
||||||
Undo.RegisterCreatedObjectUndo(go, "Place Obstacle");
|
Undo.RegisterCreatedObjectUndo(go, "Place Obstacle");
|
||||||
go.transform.position = GetDropPosition();
|
go.transform.position = GetDropPosition();
|
||||||
SetLayer(go, "Ground", report);
|
SetLayer(go, "Platform", report);
|
||||||
|
|
||||||
// 2D Sprite:用 localScale 设定尺寸,让 SpriteRenderer 和 BoxCollider2D 同步缩放
|
// 2D Sprite:用 localScale 设定尺寸,让 SpriteRenderer 和 BoxCollider2D 同步缩放
|
||||||
go.transform.localScale = new Vector3(1f, 1f, 1f);
|
go.transform.localScale = new Vector3(1f, 1f, 1f);
|
||||||
|
|||||||
@@ -352,9 +352,9 @@ namespace BaseGames.Editor
|
|||||||
GetOrAddComponent<Grid>(gridGo);
|
GetOrAddComponent<Grid>(gridGo);
|
||||||
|
|
||||||
GameObject groundTileGo = GetOrCreateChild(gridGo.transform, "Ground").gameObject;
|
GameObject groundTileGo = GetOrCreateChild(gridGo.transform, "Ground").gameObject;
|
||||||
int groundLayer = LayerMask.NameToLayer("Ground");
|
int groundLayer = LayerMask.NameToLayer("Platform");
|
||||||
if (groundLayer >= 0) groundTileGo.layer = groundLayer;
|
if (groundLayer >= 0) groundTileGo.layer = groundLayer;
|
||||||
else report.Add("Layer 'Ground' 不存在,请在 Tags and Layers 中创建。");
|
else report.Add("Layer 'Platform' 不存在,请在 Tags and Layers 中创建。");
|
||||||
|
|
||||||
GetOrAddComponent<Tilemap>(groundTileGo);
|
GetOrAddComponent<Tilemap>(groundTileGo);
|
||||||
GetOrAddComponent<TilemapRenderer>(groundTileGo);
|
GetOrAddComponent<TilemapRenderer>(groundTileGo);
|
||||||
|
|||||||
@@ -14,14 +14,14 @@ namespace BaseGames.Editor
|
|||||||
/// · PlayerHitBox ↔ EnemyHurtBox → 应碰撞(玩家攻击伤害敌人)
|
/// · PlayerHitBox ↔ EnemyHurtBox → 应碰撞(玩家攻击伤害敌人)
|
||||||
/// · EnemyHitBox ↔ PlayerHurtBox → 应碰撞(敌人攻击伤害玩家)
|
/// · EnemyHitBox ↔ PlayerHurtBox → 应碰撞(敌人攻击伤害玩家)
|
||||||
/// · EnemyHitBox ↔ EnemyHurtBox → 应碰撞(敌人可互相伤害,HitBox 运行时排除自身根节点)
|
/// · EnemyHitBox ↔ EnemyHurtBox → 应碰撞(敌人可互相伤害,HitBox 运行时排除自身根节点)
|
||||||
/// · Player ↔ Ground → 应碰撞(玩家站在地面上)
|
/// · Player ↔ Platform → 应碰撞(玩家站在平台上)
|
||||||
/// · Enemy ↔ Ground → 应碰撞(敌人站在地面上)
|
/// · Enemy ↔ Platform → 应碰撞(敌人站在平台上)
|
||||||
/// · PlayerProjectile ↔ EnemyHurtBox → 应碰撞(玩家投射物伤害敌人)
|
/// · PlayerProjectile ↔ EnemyHurtBox → 应碰撞(玩家投射物伤害敌人)
|
||||||
/// · PlayerProjectile ↔ PlayerHurtBox → 应忽略(玩家投射物不自伤)
|
/// · PlayerProjectile ↔ PlayerHurtBox → 应忽略(玩家投射物不自伤)
|
||||||
/// · PlayerProjectile ↔ Ground → 应碰撞(玩家投射物命中地形)
|
/// · PlayerProjectile ↔ Platform → 应碰撞(玩家投射物命中地形)
|
||||||
/// · EnemyProjectile ↔ PlayerHurtBox → 应碰撞(敌人投射物伤害玩家)
|
/// · EnemyProjectile ↔ PlayerHurtBox → 应碰撞(敌人投射物伤害玩家)
|
||||||
/// · EnemyProjectile ↔ EnemyHurtBox → 应忽略(敌人投射物不自伤)
|
/// · EnemyProjectile ↔ EnemyHurtBox → 应忽略(敌人投射物不自伤)
|
||||||
/// · EnemyProjectile ↔ Ground → 应碰撞(敌人投射物命中地形)
|
/// · EnemyProjectile ↔ Platform → 应碰撞(敌人投射物命中地形)
|
||||||
/// · PlayerHitBox ↔ PlayerHurtBox → 应忽略(玩家不自伤)
|
/// · PlayerHitBox ↔ PlayerHurtBox → 应忽略(玩家不自伤)
|
||||||
/// · PlayerProjectile ↔ EnemyProjectile → 应忽略(子弹不互相碰撞,Clash 系统单独处理)
|
/// · PlayerProjectile ↔ EnemyProjectile → 应忽略(子弹不互相碰撞,Clash 系统单独处理)
|
||||||
/// · HazardHitBox ↔ PlayerHurtBox → 应碰撞(环境危险伤害玩家)
|
/// · HazardHitBox ↔ PlayerHurtBox → 应碰撞(环境危险伤害玩家)
|
||||||
@@ -37,14 +37,14 @@ namespace BaseGames.Editor
|
|||||||
new("PlayerHitBox", "EnemyHurtBox", true, "玩家攻击伤害敌人"),
|
new("PlayerHitBox", "EnemyHurtBox", true, "玩家攻击伤害敌人"),
|
||||||
new("EnemyHitBox", "PlayerHurtBox", true, "敌人攻击伤害玩家"),
|
new("EnemyHitBox", "PlayerHurtBox", true, "敌人攻击伤害玩家"),
|
||||||
new("EnemyHitBox", "EnemyHurtBox", true, "敌人可互相伤害(HitBox 运行时排除自身根节点)"),
|
new("EnemyHitBox", "EnemyHurtBox", true, "敌人可互相伤害(HitBox 运行时排除自身根节点)"),
|
||||||
new("Player", "Ground", true, "玩家站在地面上"),
|
new("Player", "Platform", true, "玩家站在平台上"),
|
||||||
new("Enemy", "Ground", true, "敌人站在地面上"),
|
new("Enemy", "Platform", true, "敌人站在平台上"),
|
||||||
new("PlayerProjectile", "EnemyHurtBox", true, "玩家投射物伤害敌人"),
|
new("PlayerProjectile", "EnemyHurtBox", true, "玩家投射物伤害敌人"),
|
||||||
new("PlayerProjectile", "PlayerHurtBox", false, "玩家投射物不自伤"),
|
new("PlayerProjectile", "PlayerHurtBox", false, "玩家投射物不自伤"),
|
||||||
new("PlayerProjectile", "Ground", true, "玩家投射物命中地形"),
|
new("PlayerProjectile", "Platform", true, "玩家投射物命中地形"),
|
||||||
new("EnemyProjectile", "PlayerHurtBox", true, "敌人投射物伤害玩家"),
|
new("EnemyProjectile", "PlayerHurtBox", true, "敌人投射物伤害玩家"),
|
||||||
new("EnemyProjectile", "EnemyHurtBox", false, "敌人投射物不自伤"),
|
new("EnemyProjectile", "EnemyHurtBox", false, "敌人投射物不自伤"),
|
||||||
new("EnemyProjectile", "Ground", true, "敌人投射物命中地形"),
|
new("EnemyProjectile", "Platform", true, "敌人投射物命中地形"),
|
||||||
new("PlayerHitBox", "PlayerHurtBox", false, "玩家不自伤"),
|
new("PlayerHitBox", "PlayerHurtBox", false, "玩家不自伤"),
|
||||||
new("PlayerProjectile", "EnemyProjectile", false, "子弹不互相碰撞(Clash 系统单独处理)"),
|
new("PlayerProjectile", "EnemyProjectile", false, "子弹不互相碰撞(Clash 系统单独处理)"),
|
||||||
new("HazardHitBox", "PlayerHurtBox", true, "环境危险伤害玩家"),
|
new("HazardHitBox", "PlayerHurtBox", true, "环境危险伤害玩家"),
|
||||||
|
|||||||
11
Assets/_Game/Scripts/Equipment/CharmEventChannelSO.cs
Normal file
11
Assets/_Game/Scripts/Equipment/CharmEventChannelSO.cs
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using BaseGames.Core.Events;
|
||||||
|
|
||||||
|
namespace BaseGames.Equipment
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 护符事件频道(EVT_CharmEquipped / EVT_CharmUnequipped)。
|
||||||
|
/// </summary>
|
||||||
|
[CreateAssetMenu(menuName = "BaseGames/Events/CharmEvent")]
|
||||||
|
public class CharmEventChannelSO : BaseEventChannelSO<CharmSO> { }
|
||||||
|
}
|
||||||
11
Assets/_Game/Scripts/Equipment/CharmEventChannelSO.cs.meta
Normal file
11
Assets/_Game/Scripts/Equipment/CharmEventChannelSO.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2700003909ad60e4ba4b04d06f97805e
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using BaseGames.Core.Events;
|
|
||||||
|
|
||||||
namespace BaseGames.Equipment
|
namespace BaseGames.Equipment
|
||||||
{
|
{
|
||||||
@@ -33,10 +32,4 @@ namespace BaseGames.Equipment
|
|||||||
public bool isUnique;
|
public bool isUnique;
|
||||||
public string unlockHint;
|
public string unlockHint;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 护符事件频道(EVT_CharmEquipped / EVT_CharmUnequipped)。
|
|
||||||
/// </summary>
|
|
||||||
[CreateAssetMenu(menuName = "BaseGames/Events/CharmEvent")]
|
|
||||||
public class CharmEventChannelSO : BaseEventChannelSO<CharmSO> { }
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ namespace BaseGames.Player
|
|||||||
{
|
{
|
||||||
[SerializeField] private PlayerMovementConfigSO _config;
|
[SerializeField] private PlayerMovementConfigSO _config;
|
||||||
|
|
||||||
[Header("墙壁 Layer(默认使用 \"Wall\" + \"Ground\")")]
|
[Header("墙壁 Layer(默认使用 \"Wall\" + \"Platform\")")]
|
||||||
[SerializeField] private LayerMask _wallLayer;
|
[SerializeField] private LayerMask _wallLayer;
|
||||||
|
|
||||||
/// <summary>当前是否正在触碰墙壁。</summary>
|
/// <summary>当前是否正在触碰墙壁。</summary>
|
||||||
@@ -69,7 +69,7 @@ namespace BaseGames.Player
|
|||||||
private bool CheckPhysicalContact(int direction)
|
private bool CheckPhysicalContact(int direction)
|
||||||
{
|
{
|
||||||
if (_rb == null) return false;
|
if (_rb == null) return false;
|
||||||
LayerMask mask = _wallLayer != 0 ? _wallLayer : LayerMask.GetMask("Wall", "Ground");
|
LayerMask mask = _wallLayer != 0 ? _wallLayer : LayerMask.GetMask("Wall", "Platform");
|
||||||
var filter = new ContactFilter2D();
|
var filter = new ContactFilter2D();
|
||||||
filter.SetLayerMask(mask);
|
filter.SetLayerMask(mask);
|
||||||
filter.useTriggers = false;
|
filter.useTriggers = false;
|
||||||
@@ -94,7 +94,7 @@ namespace BaseGames.Player
|
|||||||
Vector2 center = transform.position;
|
Vector2 center = transform.position;
|
||||||
float len = _config.WallRayLength;
|
float len = _config.WallRayLength;
|
||||||
float oy = _config.WallRayOffsetY;
|
float oy = _config.WallRayOffsetY;
|
||||||
int layer = _wallLayer != 0 ? (int)_wallLayer : LayerMask.GetMask("Wall", "Ground");
|
int layer = _wallLayer != 0 ? (int)_wallLayer : LayerMask.GetMask("Wall", "Platform");
|
||||||
|
|
||||||
bool top = Physics2D.Raycast(center + Vector2.up * oy, dir, len, layer);
|
bool top = Physics2D.Raycast(center + Vector2.up * oy, dir, len, layer);
|
||||||
bool bot = Physics2D.Raycast(center + Vector2.down * oy, dir, len, layer);
|
bool bot = Physics2D.Raycast(center + Vector2.down * oy, dir, len, layer);
|
||||||
|
|||||||
@@ -34,23 +34,23 @@
|
|||||||
| `Player` | 玩家根节点 GameObject | 玩家物理碰撞体(含 Rigidbody2D);地面检测、存档点、检查点触发器通过此 Layer 筛选玩家 |
|
| `Player` | 玩家根节点 GameObject | 玩家物理碰撞体(含 Rigidbody2D);地面检测、存档点、检查点触发器通过此 Layer 筛选玩家 |
|
||||||
| `PlayerHurtBox` | 玩家子节点 `HurtBox` | 接收伤害的碰撞体(isTrigger);`EnemyHitBox` / `EnemyProjectile` 命中此 Layer 时对玩家造成伤害 |
|
| `PlayerHurtBox` | 玩家子节点 `HurtBox` | 接收伤害的碰撞体(isTrigger);`EnemyHitBox` / `EnemyProjectile` 命中此 Layer 时对玩家造成伤害 |
|
||||||
| `PlayerHitBox` | 玩家武器 / 技能 HitBox | 发出伤害的碰撞体;命中 `EnemyHurtBox` 时触发对敌人的伤害判定 |
|
| `PlayerHitBox` | 玩家武器 / 技能 HitBox | 发出伤害的碰撞体;命中 `EnemyHurtBox` 时触发对敌人的伤害判定 |
|
||||||
| `PlayerProjectile` | 玩家发射的投射物 | 玩家子弹;不与 `PlayerHurtBox`、`EnemyProjectile` 碰撞,命中 `EnemyHurtBox` 或 `Ground` 时有效 |
|
| `PlayerProjectile` | 玩家发射的投射物 | 玩家子弹;不与 `PlayerHurtBox`、`EnemyProjectile` 碰撞,命中 `EnemyHurtBox` 或 `Platform` 时有效 |
|
||||||
|
|
||||||
### 2.2 敌人相关
|
### 2.2 敌人相关
|
||||||
|
|
||||||
| Layer 名称 | 挂载对象 | 用途说明 |
|
| Layer 名称 | 挂载对象 | 用途说明 |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| `Enemy` | 敌人根节点 GameObject | 敌人物理碰撞体(含 Rigidbody2D);与 `Ground` 碰撞实现站立 |
|
| `Enemy` | 敌人根节点 GameObject | 敌人物理碰撞体(含 Rigidbody2D);与 `Platform` 碰撞实现站立 |
|
||||||
| `EnemyHurtBox` | 敌人子节点 `HurtBox` | 接收伤害的碰撞体(isTrigger);`PlayerHitBox` / `PlayerProjectile` 命中此 Layer 时对敌人造成伤害;`EnemyHitBox` 也可命中此 Layer(敌人互伤,HitBox 运行时排除自身根节点) |
|
| `EnemyHurtBox` | 敌人子节点 `HurtBox` | 接收伤害的碰撞体(isTrigger);`PlayerHitBox` / `PlayerProjectile` 命中此 Layer 时对敌人造成伤害;`EnemyHitBox` 也可命中此 Layer(敌人互伤,HitBox 运行时排除自身根节点) |
|
||||||
| `EnemyHitBox` | 敌人武器 HitBox / `LethalTrap` 主体 | 发出伤害的碰撞体;命中 `PlayerHurtBox` 时触发对玩家的伤害判定 |
|
| `EnemyHitBox` | 敌人武器 HitBox / `LethalTrap` 主体 | 发出伤害的碰撞体;命中 `PlayerHurtBox` 时触发对玩家的伤害判定 |
|
||||||
| `EnemyProjectile` | 敌人发射的投射物 | 敌人子弹;不与 `EnemyHurtBox` 碰撞,命中 `PlayerHurtBox` 或 `Ground` 时有效 |
|
| `EnemyProjectile` | 敌人发射的投射物 | 敌人子弹;不与 `EnemyHurtBox` 碰撞,命中 `PlayerHurtBox` 或 `Platform` 时有效 |
|
||||||
|
|
||||||
### 2.3 地形相关
|
### 2.3 地形相关
|
||||||
|
|
||||||
| Layer 名称 | 挂载对象 | 用途说明 |
|
| Layer 名称 | 挂载对象 | 用途说明 |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| `Ground` | 静态地面、移动平台、Tilemap 地形、障碍物 | 玩家与敌人站立的实体地面;`PlayerMovement` 的 `_groundLayer`、`PlayerWallDetector` 的 `_wallLayer`(默认)均包含此 Layer;投射物命中后销毁 |
|
| `Platform` | 静态地面、移动平台、Tilemap 地形、障碍物 | 玩家与敌人站立的实体平台;`PlayerMovement` 的 `_groundLayer`、`PlayerWallDetector` 的 `_wallLayer`(默认)均包含此 Layer;投射物命中后销毁 |
|
||||||
| `Wall` | 墙壁碰撞体(垂直面) | 玩家攀墙检测(`PlayerWallDetector` 默认掩码包含 `Wall` 和 `Ground`);若地形使用统一的 Tilemap 则墙壁可合并到 `Ground` Layer |
|
| `Wall` | 墙壁碰撞体(垂直面) | 玩家攀墙检测(`PlayerWallDetector` 默认掩码包含 `Wall` 和 `Platform`);若地形使用统一的 Tilemap 则墙壁可合并到 `Platform` Layer |
|
||||||
|
|
||||||
### 2.4 触发区域
|
### 2.4 触发区域
|
||||||
|
|
||||||
@@ -81,14 +81,14 @@
|
|||||||
| `PlayerHitBox` | `EnemyHurtBox` | ✅ | 玩家攻击伤害敌人 |
|
| `PlayerHitBox` | `EnemyHurtBox` | ✅ | 玩家攻击伤害敌人 |
|
||||||
| `EnemyHitBox` | `PlayerHurtBox` | ✅ | 敌人攻击伤害玩家 |
|
| `EnemyHitBox` | `PlayerHurtBox` | ✅ | 敌人攻击伤害玩家 |
|
||||||
| `EnemyHitBox` | `EnemyHurtBox` | ✅ | 敌人可互相伤害(HitBox 运行时排除自身根节点) |
|
| `EnemyHitBox` | `EnemyHurtBox` | ✅ | 敌人可互相伤害(HitBox 运行时排除自身根节点) |
|
||||||
| `Player` | `Ground` | ✅ | 玩家站在地面上 |
|
| `Player` | `Platform` | ✅ | 玩家站在平台上 |
|
||||||
| `Enemy` | `Ground` | ✅ | 敌人站在地面上 |
|
| `Enemy` | `Platform` | ✅ | 敌人站在平台上 |
|
||||||
| `PlayerProjectile` | `EnemyHurtBox` | ✅ | 玩家投射物伤害敌人 |
|
| `PlayerProjectile` | `EnemyHurtBox` | ✅ | 玩家投射物伤害敌人 |
|
||||||
| `PlayerProjectile` | `PlayerHurtBox` | ❌ | 玩家投射物不自伤 |
|
| `PlayerProjectile` | `PlayerHurtBox` | ❌ | 玩家投射物不自伤 |
|
||||||
| `PlayerProjectile` | `Ground` | ✅ | 玩家投射物命中地形 |
|
| `PlayerProjectile` | `Platform` | ✅ | 玩家投射物命中地形 |
|
||||||
| `EnemyProjectile` | `PlayerHurtBox` | ✅ | 敌人投射物伤害玩家 |
|
| `EnemyProjectile` | `PlayerHurtBox` | ✅ | 敌人投射物伤害玩家 |
|
||||||
| `EnemyProjectile` | `EnemyHurtBox` | ❌ | 敌人投射物不自伤 |
|
| `EnemyProjectile` | `EnemyHurtBox` | ❌ | 敌人投射物不自伤 |
|
||||||
| `EnemyProjectile` | `Ground` | ✅ | 敌人投射物命中地形 |
|
| `EnemyProjectile` | `Platform` | ✅ | 敌人投射物命中地形 |
|
||||||
| `PlayerHitBox` | `PlayerHurtBox` | ❌ | 玩家不自伤 |
|
| `PlayerHitBox` | `PlayerHurtBox` | ❌ | 玩家不自伤 |
|
||||||
| `PlayerProjectile` | `EnemyProjectile` | ❌ | 子弹不互相碰撞(Clash 系统单独处理) |
|
| `PlayerProjectile` | `EnemyProjectile` | ❌ | 子弹不互相碰撞(Clash 系统单独处理) |
|
||||||
| `HazardHitBox` | `PlayerHurtBox` | ✅ | 环境危险伤害玩家 |
|
| `HazardHitBox` | `PlayerHurtBox` | ✅ | 环境危险伤害玩家 |
|
||||||
|
|||||||
Reference in New Issue
Block a user