From 234c25bc8761a4d41bc5b4aa362449cf3e806e13 Mon Sep 17 00:00:00 2001 From: chai Date: Fri, 17 Sep 2021 20:09:19 +0800 Subject: *unit image effect --- Assets/Art/Models/Characters/Default.meta | 8 +++ Assets/Art/Models/Characters/Erika2.meta | 8 +++ .../AbstractWiresEffect/Scripts.meta | 8 +++ Assets/Art/Vfx/GrabSquaresEffect/Scripts.meta | 8 +++ Assets/Art/Vfx/GrabSquaresEffect/Shaders.meta | 8 +++ Assets/Bundle/Materials/Unit/Effect.meta | 8 +++ Assets/Bundle/Models.meta | 8 +++ Assets/Bundle/Prefabs.meta | 8 +++ Assets/Bundle/Scenes/Demo/AnimationEditScene.unity | 14 ++-- Assets/Bundle/Shaders/Unit/Effect.meta | 8 +++ .../Unit/ImageEffect/unit_img_glitch.shader | 13 ++-- Assets/Bundle/UI.meta | 8 +++ .../Unit/Monster/Robots_Prowler/ActionData.meta | 8 +++ .../Unit/Monster/Robots_Prowler/UnitData.meta | 8 +++ Assets/Bundle/Unit/NPC.meta | 8 +++ .../PC/Erika/AnimationData/Air_Combo03_Z0_1.asset | 20 +++++- Assets/Bundle/Unit/PC/Erika/Materials/Effect.meta | 8 --- Assets/Bundle/Unit/PC/Erika/Materials/Normal.meta | 8 +++ Assets/Bundle/Unit/PC/Erika/Models.meta | 8 +++ .../Unit/PC/Erika/Prefabs/Erika_Robot.prefab | 6 ++ Assets/Bundle/Unit/PC/Erika/UnitData.meta | 8 +++ Assets/Bundle/Unit/PC/Erika/Weapons/Materials.meta | 8 --- Assets/Bundle/Unit/PC/ErikaCyborg/ActionData.meta | 8 +++ .../Bundle/Unit/PC/ErikaCyborg/AnimationClip.meta | 8 +++ .../Bundle/Unit/PC/ErikaCyborg/AnimationData.meta | 8 +++ .../Unit/PC/ErikaCyborg/Materials/AfterImage.meta | 8 +++ .../Unit/PC/ErikaCyborg/Materials/Normal.meta | 8 +++ Assets/Bundle/Unit/PC/ErikaCyborg/Models.meta | 8 +++ Assets/Bundle/Unit/PC/ErikaCyborg/RootMotion.meta | 8 +++ Assets/Bundle/Unit/PC/ErikaCyborg/UnitData.meta | 8 +++ Assets/Bundle/Unit/PC/ErikaCyborg/Weapons.meta | 8 +++ Assets/Bundle/Unit/Prop.meta | 8 +++ Assets/Data/RootMotionData.meta | 8 --- Assets/Scripts/Curve3D.meta | 8 +++ Assets/Scripts/Drone.meta | 8 +++ Assets/Scripts/Managers/SceneManager.cs | 7 +- Assets/Scripts/Props.meta | 8 +++ Assets/Scripts/Robot.meta | 8 +++ Assets/Scripts/Scene.meta | 8 +++ Assets/Scripts/Scene/MainCamera.cs | 29 ++++++++ Assets/Scripts/Scene/MainCamera.cs.meta | 11 +++ Assets/Scripts/Test 1/TestCamera.cs | 28 -------- Assets/Scripts/Test 1/TestCamera.cs.meta | 11 --- Assets/Scripts/Unit/AI/Actions.meta | 8 +++ Assets/Scripts/Unit/AI/Conditionals.meta | 8 +++ Assets/Scripts/Unit/Components/UnitComponent.cs | 4 ++ Assets/Scripts/Unit/Components/UnitImageEffect.cs | 36 ++++++---- Assets/Scripts/Unit/Components/UnitRender.cs | 35 ++++++++- .../Scripts/Unit/Components/UnitState/PCState.cs | 2 +- .../Scripts/Unit/Controller/MonsterController.cs | 8 +-- Assets/Scripts/Unit/Controller/PCController.cs | 13 ++-- Assets/Scripts/Unit/Controller/UnitController.cs | 48 ++++++++++--- Assets/Scripts/Unit/Effect/UnitCamera.cs | 33 +++++++-- .../Events/EventMesh_ImageEffect_MotionBlur.cs | 3 + Assets/Scripts/Unit/UnitDetail.cs | 82 +++++++++++++++------- .../Tools/ActionTool/Editor/ActionPreviewEditor.cs | 4 +- 56 files changed, 543 insertions(+), 152 deletions(-) create mode 100644 Assets/Art/Models/Characters/Default.meta create mode 100644 Assets/Art/Models/Characters/Erika2.meta create mode 100644 Assets/Art/Vfx/GrabSquaresEffect/AbstractWiresEffect/Scripts.meta create mode 100644 Assets/Art/Vfx/GrabSquaresEffect/Scripts.meta create mode 100644 Assets/Art/Vfx/GrabSquaresEffect/Shaders.meta create mode 100644 Assets/Bundle/Materials/Unit/Effect.meta create mode 100644 Assets/Bundle/Models.meta create mode 100644 Assets/Bundle/Prefabs.meta create mode 100644 Assets/Bundle/Shaders/Unit/Effect.meta create mode 100644 Assets/Bundle/UI.meta create mode 100644 Assets/Bundle/Unit/Monster/Robots_Prowler/ActionData.meta create mode 100644 Assets/Bundle/Unit/Monster/Robots_Prowler/UnitData.meta create mode 100644 Assets/Bundle/Unit/NPC.meta delete mode 100644 Assets/Bundle/Unit/PC/Erika/Materials/Effect.meta create mode 100644 Assets/Bundle/Unit/PC/Erika/Materials/Normal.meta create mode 100644 Assets/Bundle/Unit/PC/Erika/Models.meta create mode 100644 Assets/Bundle/Unit/PC/Erika/UnitData.meta delete mode 100644 Assets/Bundle/Unit/PC/Erika/Weapons/Materials.meta create mode 100644 Assets/Bundle/Unit/PC/ErikaCyborg/ActionData.meta create mode 100644 Assets/Bundle/Unit/PC/ErikaCyborg/AnimationClip.meta create mode 100644 Assets/Bundle/Unit/PC/ErikaCyborg/AnimationData.meta create mode 100644 Assets/Bundle/Unit/PC/ErikaCyborg/Materials/AfterImage.meta create mode 100644 Assets/Bundle/Unit/PC/ErikaCyborg/Materials/Normal.meta create mode 100644 Assets/Bundle/Unit/PC/ErikaCyborg/Models.meta create mode 100644 Assets/Bundle/Unit/PC/ErikaCyborg/RootMotion.meta create mode 100644 Assets/Bundle/Unit/PC/ErikaCyborg/UnitData.meta create mode 100644 Assets/Bundle/Unit/PC/ErikaCyborg/Weapons.meta create mode 100644 Assets/Bundle/Unit/Prop.meta delete mode 100644 Assets/Data/RootMotionData.meta create mode 100644 Assets/Scripts/Curve3D.meta create mode 100644 Assets/Scripts/Drone.meta create mode 100644 Assets/Scripts/Props.meta create mode 100644 Assets/Scripts/Robot.meta create mode 100644 Assets/Scripts/Scene.meta create mode 100644 Assets/Scripts/Scene/MainCamera.cs create mode 100644 Assets/Scripts/Scene/MainCamera.cs.meta delete mode 100644 Assets/Scripts/Test 1/TestCamera.cs delete mode 100644 Assets/Scripts/Test 1/TestCamera.cs.meta create mode 100644 Assets/Scripts/Unit/AI/Actions.meta create mode 100644 Assets/Scripts/Unit/AI/Conditionals.meta (limited to 'Assets') diff --git a/Assets/Art/Models/Characters/Default.meta b/Assets/Art/Models/Characters/Default.meta new file mode 100644 index 00000000..43499fc7 --- /dev/null +++ b/Assets/Art/Models/Characters/Default.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e8a40298dd4efd14c9f90a63734ca39b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/Models/Characters/Erika2.meta b/Assets/Art/Models/Characters/Erika2.meta new file mode 100644 index 00000000..fd7369d9 --- /dev/null +++ b/Assets/Art/Models/Characters/Erika2.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 077f81003f9fc564791cce182048c2b0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/Vfx/GrabSquaresEffect/AbstractWiresEffect/Scripts.meta b/Assets/Art/Vfx/GrabSquaresEffect/AbstractWiresEffect/Scripts.meta new file mode 100644 index 00000000..b76e98a5 --- /dev/null +++ b/Assets/Art/Vfx/GrabSquaresEffect/AbstractWiresEffect/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 20381b3eecfbfe34a9d9222868969d29 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/Vfx/GrabSquaresEffect/Scripts.meta b/Assets/Art/Vfx/GrabSquaresEffect/Scripts.meta new file mode 100644 index 00000000..41200932 --- /dev/null +++ b/Assets/Art/Vfx/GrabSquaresEffect/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: abff7cb61c760094f8ab9437379e0f2c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/Vfx/GrabSquaresEffect/Shaders.meta b/Assets/Art/Vfx/GrabSquaresEffect/Shaders.meta new file mode 100644 index 00000000..fa9e76cd --- /dev/null +++ b/Assets/Art/Vfx/GrabSquaresEffect/Shaders.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e38cb65072bb4a64cbe162792de9bec2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Bundle/Materials/Unit/Effect.meta b/Assets/Bundle/Materials/Unit/Effect.meta new file mode 100644 index 00000000..fdf8c1db --- /dev/null +++ b/Assets/Bundle/Materials/Unit/Effect.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0525fec1eb7cc94458170e9e106955d5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Bundle/Models.meta b/Assets/Bundle/Models.meta new file mode 100644 index 00000000..c9b5bf44 --- /dev/null +++ b/Assets/Bundle/Models.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: adab1ca5f61452c4c90f19e7c11adf0e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Bundle/Prefabs.meta b/Assets/Bundle/Prefabs.meta new file mode 100644 index 00000000..82588fb1 --- /dev/null +++ b/Assets/Bundle/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dac6442cad7539149a7527510665d510 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Bundle/Scenes/Demo/AnimationEditScene.unity b/Assets/Bundle/Scenes/Demo/AnimationEditScene.unity index bce02def..efcb5238 100644 --- a/Assets/Bundle/Scenes/Demo/AnimationEditScene.unity +++ b/Assets/Bundle/Scenes/Demo/AnimationEditScene.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.18028334, g: 0.22571328, b: 0.3069217, a: 1} + m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -62383,7 +62383,7 @@ Camera: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 687023027} - m_Enabled: 1 + m_Enabled: 0 serializedVersion: 2 m_ClearFlags: 2 m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0} @@ -62403,7 +62403,7 @@ Camera: field of view: 60 orthographic: 0 orthographic size: 5 - m_Depth: 0 + m_Depth: 1 m_CullingMask: serializedVersion: 2 m_Bits: 512 @@ -67384,7 +67384,7 @@ GameObject: - component: {fileID: 861741899} - component: {fileID: 861741898} - component: {fileID: 861741901} - - component: {fileID: 861741902} + - component: {fileID: 861741903} m_Layer: 0 m_Name: Main Camera m_TagString: MainCamera @@ -67516,7 +67516,7 @@ MonoBehaviour: m_BeforeTransparentBundles: [] m_BeforeStackBundles: [] m_AfterStackBundles: [] ---- !u!114 &861741902 +--- !u!114 &861741903 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -67525,10 +67525,10 @@ MonoBehaviour: m_GameObject: {fileID: 861741897} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 43084247c2f8b3743845be21c5d86ab5, type: 3} + m_Script: {fileID: 11500000, guid: 68da209687f0dcc49967a423b26c204c, type: 3} m_Name: m_EditorClassIdentifier: - offset: {x: 0, y: 1.5, z: 0} + offset: {x: 0, y: 1.2, z: 0} --- !u!1 &998301198 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Bundle/Shaders/Unit/Effect.meta b/Assets/Bundle/Shaders/Unit/Effect.meta new file mode 100644 index 00000000..7df9a033 --- /dev/null +++ b/Assets/Bundle/Shaders/Unit/Effect.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9cc4684b9f432f149b16a51f148c9490 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Bundle/Shaders/Unit/ImageEffect/unit_img_glitch.shader b/Assets/Bundle/Shaders/Unit/ImageEffect/unit_img_glitch.shader index 62f75459..014d8c52 100644 --- a/Assets/Bundle/Shaders/Unit/ImageEffect/unit_img_glitch.shader +++ b/Assets/Bundle/Shaders/Unit/ImageEffect/unit_img_glitch.shader @@ -47,12 +47,15 @@ fixed4 frag (v2f i) : SV_Target { - float amount = 0.01; + float amount = 0.05f; // sample the texture - fixed4 col = tex2D(_MainTex, i.uv + fixed2(0, 0)); - fixed4 col2 = tex2D(_MainTex, i.uv + fixed2(amount, 0)); - fixed4 col3 = tex2D(_MainTex, i.uv + fixed2(-amount, 0)); - fixed4 col4 = tex2D(_MainTex, i.uv + fixed2(0, 0)); + float angle = 90; + float sinValue = sin(radians(angle)); + float cosValue = cos(radians(angle)); + fixed4 col = tex2D(_MainTex, i.uv); + fixed4 col2 = tex2D(_MainTex, i.uv + fixed2(amount * sinValue, amount * cosValue)); + fixed4 col3 = tex2D(_MainTex, i.uv + fixed2(2 * amount * sinValue, 2 * amount * cosValue)); + fixed4 col4 = ( col.a + col2.a + col3.a ) / 3; fixed4 color = fixed4(col.r, col2.g, col3.b, col4.a); return color; } diff --git a/Assets/Bundle/UI.meta b/Assets/Bundle/UI.meta new file mode 100644 index 00000000..0914914c --- /dev/null +++ b/Assets/Bundle/UI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4392471259b05a74a82a4bc72b510eb1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Bundle/Unit/Monster/Robots_Prowler/ActionData.meta b/Assets/Bundle/Unit/Monster/Robots_Prowler/ActionData.meta new file mode 100644 index 00000000..ca7266b0 --- /dev/null +++ b/Assets/Bundle/Unit/Monster/Robots_Prowler/ActionData.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a1d7b6e0d8fb1a642a65011fb6cd7d89 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Bundle/Unit/Monster/Robots_Prowler/UnitData.meta b/Assets/Bundle/Unit/Monster/Robots_Prowler/UnitData.meta new file mode 100644 index 00000000..142f5872 --- /dev/null +++ b/Assets/Bundle/Unit/Monster/Robots_Prowler/UnitData.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6ad7401709700f34db2b795830937d76 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Bundle/Unit/NPC.meta b/Assets/Bundle/Unit/NPC.meta new file mode 100644 index 00000000..eeea13e1 --- /dev/null +++ b/Assets/Bundle/Unit/NPC.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8ced034d375cdfa488814663ea17a79b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Bundle/Unit/PC/Erika/AnimationData/Air_Combo03_Z0_1.asset b/Assets/Bundle/Unit/PC/Erika/AnimationData/Air_Combo03_Z0_1.asset index 2e6c13c6..47959894 100644 --- a/Assets/Bundle/Unit/PC/Erika/AnimationData/Air_Combo03_Z0_1.asset +++ b/Assets/Bundle/Unit/PC/Erika/AnimationData/Air_Combo03_Z0_1.asset @@ -18,7 +18,8 @@ MonoBehaviour: animationEvents: - {fileID: 114581710045323768} - {fileID: 114435450776992514} - - {fileID: 114721479198979772} + - {fileID: 0} + - {fileID: 114095509392824086} hurtBoxes: [] hitBoxes: - collider: @@ -125,6 +126,23 @@ MonoBehaviour: m_keys: 01000000 m_values: - 0.1 +--- !u!114 &114095509392824086 +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: a75401f0015aa1e4f856979c8aa1dae2, type: 3} + m_Name: EventMesh_ImageEffect_MotionBlur + m_EditorClassIdentifier: + startFrame: 6 + lifeTime: 0.35 + angle: 0 + distance: 0 + hideUnitInMainCamera: 1 --- !u!114 &114435450776992514 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Bundle/Unit/PC/Erika/Materials/Effect.meta b/Assets/Bundle/Unit/PC/Erika/Materials/Effect.meta deleted file mode 100644 index 855459bb..00000000 --- a/Assets/Bundle/Unit/PC/Erika/Materials/Effect.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 3ab09dc0a18f20b4ea29507887e11428 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Bundle/Unit/PC/Erika/Materials/Normal.meta b/Assets/Bundle/Unit/PC/Erika/Materials/Normal.meta new file mode 100644 index 00000000..8c41a6b2 --- /dev/null +++ b/Assets/Bundle/Unit/PC/Erika/Materials/Normal.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5dc1b71affc68b54594096a1b96a5c00 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Bundle/Unit/PC/Erika/Models.meta b/Assets/Bundle/Unit/PC/Erika/Models.meta new file mode 100644 index 00000000..11148d17 --- /dev/null +++ b/Assets/Bundle/Unit/PC/Erika/Models.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0d712421d808a43438a43d8a5d34effe +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Bundle/Unit/PC/Erika/Prefabs/Erika_Robot.prefab b/Assets/Bundle/Unit/PC/Erika/Prefabs/Erika_Robot.prefab index 40013062..e6332658 100644 --- a/Assets/Bundle/Unit/PC/Erika/Prefabs/Erika_Robot.prefab +++ b/Assets/Bundle/Unit/PC/Erika/Prefabs/Erika_Robot.prefab @@ -714,6 +714,12 @@ MonoBehaviour: - {fileID: 0} - {fileID: 0} snapshotBound: 5 + mainRenderer: + tag: 0 + renderer: {fileID: 7046772783541976850} + renderers: + - tag: 0 + renderer: {fileID: 7046772783541976850} --- !u!1 &6928056367075676882 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Bundle/Unit/PC/Erika/UnitData.meta b/Assets/Bundle/Unit/PC/Erika/UnitData.meta new file mode 100644 index 00000000..7d4b13eb --- /dev/null +++ b/Assets/Bundle/Unit/PC/Erika/UnitData.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 922befa8a94692845b88500a23229d7f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Bundle/Unit/PC/Erika/Weapons/Materials.meta b/Assets/Bundle/Unit/PC/Erika/Weapons/Materials.meta deleted file mode 100644 index be6badd6..00000000 --- a/Assets/Bundle/Unit/PC/Erika/Weapons/Materials.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 2c46a5a23283c7d428ae8bb13663ab6a -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Bundle/Unit/PC/ErikaCyborg/ActionData.meta b/Assets/Bundle/Unit/PC/ErikaCyborg/ActionData.meta new file mode 100644 index 00000000..f5434a00 --- /dev/null +++ b/Assets/Bundle/Unit/PC/ErikaCyborg/ActionData.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 07c3b2bf6cb8cc2498422bbb105cbad8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Bundle/Unit/PC/ErikaCyborg/AnimationClip.meta b/Assets/Bundle/Unit/PC/ErikaCyborg/AnimationClip.meta new file mode 100644 index 00000000..4ed2c938 --- /dev/null +++ b/Assets/Bundle/Unit/PC/ErikaCyborg/AnimationClip.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 827d77abe87680a47ae2d71a9e953a18 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Bundle/Unit/PC/ErikaCyborg/AnimationData.meta b/Assets/Bundle/Unit/PC/ErikaCyborg/AnimationData.meta new file mode 100644 index 00000000..43a52cd1 --- /dev/null +++ b/Assets/Bundle/Unit/PC/ErikaCyborg/AnimationData.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7a2b72fbb41383047ac45e6c22ea9663 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Bundle/Unit/PC/ErikaCyborg/Materials/AfterImage.meta b/Assets/Bundle/Unit/PC/ErikaCyborg/Materials/AfterImage.meta new file mode 100644 index 00000000..85d58a8c --- /dev/null +++ b/Assets/Bundle/Unit/PC/ErikaCyborg/Materials/AfterImage.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b2b0838fb0603964e99904eefe81ad7f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Bundle/Unit/PC/ErikaCyborg/Materials/Normal.meta b/Assets/Bundle/Unit/PC/ErikaCyborg/Materials/Normal.meta new file mode 100644 index 00000000..dd867045 --- /dev/null +++ b/Assets/Bundle/Unit/PC/ErikaCyborg/Materials/Normal.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1c8a678ea9e801f439a1003d04f33cf5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Bundle/Unit/PC/ErikaCyborg/Models.meta b/Assets/Bundle/Unit/PC/ErikaCyborg/Models.meta new file mode 100644 index 00000000..dc530723 --- /dev/null +++ b/Assets/Bundle/Unit/PC/ErikaCyborg/Models.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ebf636c7cf7b1934b885298ce1f5f42e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Bundle/Unit/PC/ErikaCyborg/RootMotion.meta b/Assets/Bundle/Unit/PC/ErikaCyborg/RootMotion.meta new file mode 100644 index 00000000..b28b6f04 --- /dev/null +++ b/Assets/Bundle/Unit/PC/ErikaCyborg/RootMotion.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2022e8298d3a8624992143eb57c0f8ac +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Bundle/Unit/PC/ErikaCyborg/UnitData.meta b/Assets/Bundle/Unit/PC/ErikaCyborg/UnitData.meta new file mode 100644 index 00000000..eeca0d3b --- /dev/null +++ b/Assets/Bundle/Unit/PC/ErikaCyborg/UnitData.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f6aa859c834c51f498ef0b3c3b83a0f5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Bundle/Unit/PC/ErikaCyborg/Weapons.meta b/Assets/Bundle/Unit/PC/ErikaCyborg/Weapons.meta new file mode 100644 index 00000000..7f91da28 --- /dev/null +++ b/Assets/Bundle/Unit/PC/ErikaCyborg/Weapons.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: df69962f5b01e444a8bea87e31c7d0a4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Bundle/Unit/Prop.meta b/Assets/Bundle/Unit/Prop.meta new file mode 100644 index 00000000..affd6eed --- /dev/null +++ b/Assets/Bundle/Unit/Prop.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dafc173db1ebeab4c80641cc3d4fa528 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Data/RootMotionData.meta b/Assets/Data/RootMotionData.meta deleted file mode 100644 index 14abf402..00000000 --- a/Assets/Data/RootMotionData.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 5cfee9bde9754254f83510f88dd2a19b -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Curve3D.meta b/Assets/Scripts/Curve3D.meta new file mode 100644 index 00000000..fef1c5e7 --- /dev/null +++ b/Assets/Scripts/Curve3D.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ad8b718b6b700d8419838dad07158567 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Drone.meta b/Assets/Scripts/Drone.meta new file mode 100644 index 00000000..694cff70 --- /dev/null +++ b/Assets/Scripts/Drone.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ec3412151f8a72a41b2ed21316763399 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Managers/SceneManager.cs b/Assets/Scripts/Managers/SceneManager.cs index c986a1b1..182b662d 100644 --- a/Assets/Scripts/Managers/SceneManager.cs +++ b/Assets/Scripts/Managers/SceneManager.cs @@ -5,11 +5,6 @@ using UnityEngine; public class SceneManager : Singleton { - public Camera mainCamera { get; private set; } - - public void SetMainCamera(Camera cam) - { - mainCamera = cam; - } + public Camera mainCamera { get { return MainCamera.Instance.camera; } } } diff --git a/Assets/Scripts/Props.meta b/Assets/Scripts/Props.meta new file mode 100644 index 00000000..bb96602e --- /dev/null +++ b/Assets/Scripts/Props.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f299520ed9fcf4a45858ad4ef5a8d5d1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Robot.meta b/Assets/Scripts/Robot.meta new file mode 100644 index 00000000..0b5a087e --- /dev/null +++ b/Assets/Scripts/Robot.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7c09ca1609552d24bbe697d1516f8aa9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Scene.meta b/Assets/Scripts/Scene.meta new file mode 100644 index 00000000..eb7a8716 --- /dev/null +++ b/Assets/Scripts/Scene.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: eaee2d0f48cff9b40baf0686a8105600 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Scene/MainCamera.cs b/Assets/Scripts/Scene/MainCamera.cs new file mode 100644 index 00000000..45399ceb --- /dev/null +++ b/Assets/Scripts/Scene/MainCamera.cs @@ -0,0 +1,29 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class MainCamera : SingletonMB +{ + public new Camera camera { get; private set; } + + public Vector3 offset = Vector3.zero; + + protected override void Awake() + { + base.Awake(); + camera = gameObject.GetComponent(); + } + + void Update() + { + if (TestErika.Instance.erika.unitController == null) + { + return; + } + Vector3 pos = transform.position; + pos.x = TestErika.Instance.erika.unitController.transform.position.x; + pos.y = TestErika.Instance.erika.unitController.transform.position.y; + transform.position = pos + offset; + } + +} \ No newline at end of file diff --git a/Assets/Scripts/Scene/MainCamera.cs.meta b/Assets/Scripts/Scene/MainCamera.cs.meta new file mode 100644 index 00000000..1ad6678e --- /dev/null +++ b/Assets/Scripts/Scene/MainCamera.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 68da209687f0dcc49967a423b26c204c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Test 1/TestCamera.cs b/Assets/Scripts/Test 1/TestCamera.cs deleted file mode 100644 index 8e4ba89e..00000000 --- a/Assets/Scripts/Test 1/TestCamera.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class TestCamera : MonoBehaviour -{ - public Vector3 offset = Vector3.zero; - - void Awake() - { - SceneManager.Instance.SetMainCamera(this.gameObject.GetComponent()); - } - - // Update is called once per frame - void Update() - { - if(TestErika.Instance.erika.unitController == null) - { - return; - } - Vector3 pos = transform.position; - //pos.x = TestErika.Instance.erika.unitController.GetComponent().center.x; - //pos.y = TestErika.Instance.erika.unitController.GetComponent().center.y; - pos.x = TestErika.Instance.erika.unitController.transform.position.x; - pos.y = TestErika.Instance.erika.unitController.transform.position.y; - transform.position = pos + offset; - } -} diff --git a/Assets/Scripts/Test 1/TestCamera.cs.meta b/Assets/Scripts/Test 1/TestCamera.cs.meta deleted file mode 100644 index 82135dff..00000000 --- a/Assets/Scripts/Test 1/TestCamera.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 43084247c2f8b3743845be21c5d86ab5 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Unit/AI/Actions.meta b/Assets/Scripts/Unit/AI/Actions.meta new file mode 100644 index 00000000..9b4ad463 --- /dev/null +++ b/Assets/Scripts/Unit/AI/Actions.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 971e9d55b8bc0894eb6a110fb962000b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Unit/AI/Conditionals.meta b/Assets/Scripts/Unit/AI/Conditionals.meta new file mode 100644 index 00000000..70a86da5 --- /dev/null +++ b/Assets/Scripts/Unit/AI/Conditionals.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 85b7e0c7ed1d12f42a5178bfbf3d934c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Unit/Components/UnitComponent.cs b/Assets/Scripts/Unit/Components/UnitComponent.cs index a5034581..825b6d92 100644 --- a/Assets/Scripts/Unit/Components/UnitComponent.cs +++ b/Assets/Scripts/Unit/Components/UnitComponent.cs @@ -29,6 +29,10 @@ public class UnitComponent : MonoBehaviour m_Owner = GetComponent(); } + public virtual void OnPostInitialize() + { + } + public virtual void Release() { m_Owner = null; diff --git a/Assets/Scripts/Unit/Components/UnitImageEffect.cs b/Assets/Scripts/Unit/Components/UnitImageEffect.cs index a2689ca1..8af48a3e 100644 --- a/Assets/Scripts/Unit/Components/UnitImageEffect.cs +++ b/Assets/Scripts/Unit/Components/UnitImageEffect.cs @@ -17,14 +17,17 @@ public class UnitImageEffectHolder } } -public delegate void UnitImageEffectStepCallback(float normalizedTime); - public class UnitImageEffectHandle { - public float lifeTime; + public delegate void UnitImageEffectStepCallback(float normalizedTime); + public delegate void UnitImageEffectEndCallback(); + + public float lifeTime; public float curTime; public UnitImageEffectHolder holder; + public UnitImageEffectStepCallback stepFunc; + public UnitImageEffectEndCallback onStop; } //Unit后处理效果 @@ -49,6 +52,7 @@ public class UnitImageEffect : UnitComponent if(handle.curTime > handle.lifeTime) { temp.Add(handle); + handle.onStop?.Invoke(); continue; } handle.stepFunc?.Invoke(handle.curTime / handle.lifeTime); @@ -123,7 +127,6 @@ public class UnitImageEffect : UnitComponent holder = null; } - #region effects public void ShowMotionBlur(float lifeTime, float angle, float distance) { @@ -155,9 +158,11 @@ public class UnitImageEffect : UnitComponent effects.Add(handle); } - public void ShowGlitch(float lifeTime) + public void ShowGlitch(float lifeTime, bool hideUnitInMainCamera = true) { - UnitImageEffectHandle handle = m_HandlePool.Get(); + PCController pc = UnitManager.Instance.pc as PCController; + + UnitImageEffectHandle handle = m_HandlePool.Get(); handle.lifeTime = lifeTime; handle.curTime = 0; @@ -171,18 +176,25 @@ public class UnitImageEffect : UnitComponent handle.holder.renderer.GetPropertyBlock(block); handle.holder.renderer.SetPropertyBlock(block); - handle.stepFunc = (float normalTime) => - { + handle.stepFunc = (float normalTime) => { + UnitCamera.Instance.Render(); + handle.holder.gameObject.transform.position = UnitManager.Instance.pc.center; handle.holder.renderer.GetPropertyBlock(block); handle.holder.renderer.SetPropertyBlock(block); }; - effects.Add(handle); - } + if (hideUnitInMainCamera) + { + pc.unitRender.SetVisibilityInAllCameras(false); + } - - #endregion + handle.onStop = () => { + pc.unitRender.SetVisibilityInAllCameras(true); + }; + + effects.Add(handle); + } } \ No newline at end of file diff --git a/Assets/Scripts/Unit/Components/UnitRender.cs b/Assets/Scripts/Unit/Components/UnitRender.cs index 435c517d..d1ea0ffb 100644 --- a/Assets/Scripts/Unit/Components/UnitRender.cs +++ b/Assets/Scripts/Unit/Components/UnitRender.cs @@ -6,17 +6,33 @@ using UnityEngine; [DisallowMultipleComponent] public class UnitRender : UnitComponent { + private IBodyRendererAgent m_Body; + + public Renderer mainRenderer + { + get + { + if (this.owner.unitDetail == null) + return null; + return m_Body.mainRenderer.renderer; + } + } public override void Initialize() { base.Initialize(); } + public override void OnPostInitialize() + { + base.OnPostInitialize(); + m_Body = owner.unitDetail as IBodyRendererAgent; + } + public void SetVisibilityInMainCamera(bool isVisible) { LayerMask mask = LayerMask.GetMask("PlayerCharacter"); - - if(!isVisible) + if (!isVisible) { SceneManager.Instance.mainCamera.cullingMask &= ~mask.value; } @@ -26,4 +42,19 @@ public class UnitRender : UnitComponent } } + public void SetVisibilityInAllCameras(bool isVisible) + { + if (mainRenderer == null) + return; + + if (isVisible) + { + mainRenderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.On; + } + else + { + mainRenderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.ShadowsOnly; + } + } + } diff --git a/Assets/Scripts/Unit/Components/UnitState/PCState.cs b/Assets/Scripts/Unit/Components/UnitState/PCState.cs index eae1b370..060d6e91 100644 --- a/Assets/Scripts/Unit/Components/UnitState/PCState.cs +++ b/Assets/Scripts/Unit/Components/UnitState/PCState.cs @@ -82,7 +82,7 @@ public partial class PCState : UnitState if(m_PrevState != m_State && owner.unitRender != null) { - owner.unitRender.SetVisibilityInMainCamera(true); + // owner.unitRender.SetVisibilityInMainCamera(true); } StartCoroutine(m_State.ToString(), param); diff --git a/Assets/Scripts/Unit/Controller/MonsterController.cs b/Assets/Scripts/Unit/Controller/MonsterController.cs index 03756211..22645b47 100644 --- a/Assets/Scripts/Unit/Controller/MonsterController.cs +++ b/Assets/Scripts/Unit/Controller/MonsterController.cs @@ -6,14 +6,14 @@ public class MonsterController : UnitController { public override UnitType type { get { return UnitType.Monster; } } - public override void Initialize(GameObject obj, string folder) + protected override void Initialize() { - base.Initialize(obj, folder); + base.Initialize(); - unitState = gameObject.GetOrAddComponent(); + unitState = GetOrAddUnitComponent(); unitState.Initialize(); - unitAnimation = gameObject.GetOrAddComponent(); + unitAnimation = GetOrAddUnitComponent(); unitAnimation.Initialize(); } diff --git a/Assets/Scripts/Unit/Controller/PCController.cs b/Assets/Scripts/Unit/Controller/PCController.cs index ea07fc56..4c665e7a 100644 --- a/Assets/Scripts/Unit/Controller/PCController.cs +++ b/Assets/Scripts/Unit/Controller/PCController.cs @@ -19,22 +19,21 @@ public class PCController : UnitController instance = this; } - public override void Initialize(GameObject obj, string folder) + protected override void Initialize() { - base.Initialize(obj, folder); + base.Initialize(); - unitState = gameObject.GetOrAddComponent(); + unitState = GetOrAddUnitComponent(); unitState.Initialize(); - unitAnimation = gameObject.GetOrAddComponent(); + unitAnimation = GetOrAddUnitComponent(); unitAnimation.Initialize(); - unitAfterImage = gameObject.GetOrAddComponent(); + unitAfterImage = GetOrAddUnitComponent(); unitAfterImage.Initialize(); - unitImageEffect = gameObject.GetOrAddComponent(); + unitImageEffect = GetOrAddUnitComponent(); unitImageEffect.Initialize(); - } public override void Update() diff --git a/Assets/Scripts/Unit/Controller/UnitController.cs b/Assets/Scripts/Unit/Controller/UnitController.cs index ff3d9df2..6ccf124b 100644 --- a/Assets/Scripts/Unit/Controller/UnitController.cs +++ b/Assets/Scripts/Unit/Controller/UnitController.cs @@ -44,6 +44,8 @@ public class UnitController : MonoBehaviour/*, Interactable*/ public GameObject unitObj; // 角色模型 + protected List unitComponents; + #region 事件监听 public delegate void OnTimelineEventHandle(AnimationEventBase animEvent); public OnTimelineEventHandle onTimelineEvent { get; set; } @@ -107,29 +109,53 @@ public class UnitController : MonoBehaviour/*, Interactable*/ public virtual void Initialize( GameObject obj , string folder) { unitObj = obj; - m_Folder = folder; + unitComponents = new List(); - unitRender = gameObject.GetOrAddComponent(); - unitRender.Initialize(); + Initialize(); + + OnPostInitailize(); + } - unitSkill = gameObject.GetOrAddComponent(); - unitSkill.Initialize(); + protected virtual void Initialize() + { + unitSkill = GetOrAddUnitComponent(); + unitSkill.Initialize(); - unitRootMotion = gameObject.GetOrAddComponent(); - unitRootMotion.Initialize(); + unitRootMotion = GetOrAddUnitComponent(); + unitRootMotion.Initialize(); - unitCollider = gameObject.GetOrAddComponent(); + unitCollider = GetOrAddUnitComponent(); unitCollider.Initialize(); - unitBody = gameObject.GetOrAddComponent(); + unitBody = GetOrAddUnitComponent(); unitBody.Initialize(); + unitRender = GetOrAddUnitComponent(); + unitRender.Initialize(); + unitDetail = gameObject.GetComponentInChildren(); + } - } + private void OnPostInitailize() + { + if (unitComponents == null) + return; + for(int i = 0; i < unitComponents.Count; ++i) + { + unitComponents[i].OnPostInitialize(); + } + } + + protected T GetOrAddUnitComponent() where T : UnitComponent + { + T comp = gameObject.GetOrAddComponent(); + Debug.Assert(unitComponents != null); + unitComponents.Add(comp); + return comp; + } - public virtual void Update() + public virtual void Update() { unitRender.OnUpdate(); unitState.OnUpdate(); diff --git a/Assets/Scripts/Unit/Effect/UnitCamera.cs b/Assets/Scripts/Unit/Effect/UnitCamera.cs index 90d78730..abb13a00 100644 --- a/Assets/Scripts/Unit/Effect/UnitCamera.cs +++ b/Assets/Scripts/Unit/Effect/UnitCamera.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using UnityEngine; -// 专门用来渲染player character的相机,用来做特效 +// 专门用来渲染character的相机,用来做特效 [RequireComponent(typeof(Camera))] public class UnitCamera : SingletonMB { @@ -13,12 +13,22 @@ public class UnitCamera : SingletonMB private void OnEnable() { m_Camera = GetComponent(); - } - - private void OnPreRender() + m_Camera.enabled = false; + } + + // 手动渲染 + public void Render() + { + m_Camera.Render(); + } + + // 这里要用OnPreCull,不能是OnPreRender,因为设置了可见性,OnPreRender是在可见性剔除之后 + void OnPreCull() { if (pc == null) return; + if (pc.unitImageEffect == null || pc.unitImageEffect.effects.Count == 0) + return; if (m_Camera == null) return; @@ -29,6 +39,17 @@ public class UnitCamera : SingletonMB float fov = 2 * Mathf.Atan2(pc.unitDetail.snapshotBound / 2, dz) * Mathf.Rad2Deg; m_Camera.fieldOfView = fov; - } -} + // 开启unit的渲染 + pc.unitRender.SetVisibilityInAllCameras(true); + } + + void OnPostRender() + { + if (pc.unitImageEffect == null || pc.unitImageEffect.effects.Count == 0) + return; + + pc.unitRender.SetVisibilityInAllCameras(false); + } + +} \ No newline at end of file diff --git a/Assets/Scripts/Unit/Events/EventMesh_ImageEffect_MotionBlur.cs b/Assets/Scripts/Unit/Events/EventMesh_ImageEffect_MotionBlur.cs index dd1b4759..cb1a657c 100644 --- a/Assets/Scripts/Unit/Events/EventMesh_ImageEffect_MotionBlur.cs +++ b/Assets/Scripts/Unit/Events/EventMesh_ImageEffect_MotionBlur.cs @@ -14,4 +14,7 @@ public class EventMesh_ImageEffect_MotionBlur : AnimationEventBase public float distance; + [Tooltip("隐藏角色")] + public bool hideUnitInMainCamera; + } diff --git a/Assets/Scripts/Unit/UnitDetail.cs b/Assets/Scripts/Unit/UnitDetail.cs index 3d075451..3f7f23e9 100644 --- a/Assets/Scripts/Unit/UnitDetail.cs +++ b/Assets/Scripts/Unit/UnitDetail.cs @@ -1,4 +1,5 @@ using System; +using UnityEngine.Serialization; using System.Collections; using System.Collections.Generic; using UnityEngine; @@ -110,63 +111,86 @@ public enum EUnitReferencePoint [Serializable] public class UnitReferencePointDictionary : SerializableDictionary { } +public enum EBodyPart +{ + Body = 0, // main body +} + +[Serializable] +public class BodyPartRenderer +{ + [SerializeField] public EBodyPart tag; + [SerializeField] public Renderer renderer; +} + +public interface IBodyRendererAgent +{ + BodyPartRenderer mainRenderer { get; } + BodyPartRenderer[] renderers{ get; } +} + +public interface IBodyJointAgent +{ + UnitBoneDictionary bones { get; } + UnitReferencePointDictionary referencePoints { get; } +} + // 角色的prefab附加数据 // * afterimage的prefab // * 骨骼映射 // * 武器 [DisallowMultipleComponent] -public class UnitDetail : MonoBehaviour +public class UnitDetail : MonoBehaviour, IBodyRendererAgent, IBodyJointAgent { public bool showGizmos; [Tooltip("残影用的prefab")] - public string afterImageAvatarPath; - - public UnitBoneDictionary bones; - - public UnitReferencePointDictionary referencePoints; + public string afterImageAvatarPath; + + UnitBoneDictionary IBodyJointAgent.bones { get { return m_Bones; } } + [FormerlySerializedAs("bones")] + public UnitBoneDictionary m_Bones; + + UnitReferencePointDictionary IBodyJointAgent.referencePoints { get { return m_ReferencePoints; } } + [FormerlySerializedAs("referencePoints")] + public UnitReferencePointDictionary m_ReferencePoints; - //public Vector2 snapshotBound; public float snapshotBound; - private SkinnedMeshRenderer m_meshRenderer; - public SkinnedMeshRenderer meshRenderer - { - get - { - if (!m_meshRenderer) - m_meshRenderer = this.gameObject.GetComponentInChildren(); - return m_meshRenderer; - } - } + BodyPartRenderer IBodyRendererAgent.mainRenderer { get { return m_MainRenderer; } } + [SerializeField] private BodyPartRenderer m_MainRenderer; + BodyPartRenderer[] IBodyRendererAgent.renderers { get { return m_Renderers; } } + [SerializeField] private BodyPartRenderer[] m_Renderers; public Vector3 center { get { - return meshRenderer.bounds.center; + if (m_MainRenderer == null || m_MainRenderer.renderer == null) + return Vector3.zero ; + return m_MainRenderer.renderer.bounds.center; } } public UnitDetail() - { - bones = new UnitBoneDictionary(); + { + m_Bones = new UnitBoneDictionary(); foreach(EUnitBone e in Enum.GetValues(typeof(EUnitBone))) - { - bones.Add(e, null); + { + m_Bones.Add(e, null); } } public Transform GetBone(EUnitBone bone) { - if (bones.ContainsKey(bone)) - return bones[bone]; + if (m_Bones.ContainsKey(bone)) + return m_Bones[bone]; return null; } public bool HasBone(EUnitBone bone) { - return bones.ContainsKey(bone); + return m_Bones.ContainsKey(bone); } private void OnDrawGizmos() @@ -176,4 +200,12 @@ public class UnitDetail : MonoBehaviour Gizmos.DrawWireCube(center, new Vector3(snapshotBound, snapshotBound, 0)); } + IEnumerator GetRenderers() + { + for(int i = 0; i < m_Renderers.Length; ++i) + { + yield return m_Renderers[i].renderer; + } + } + } \ No newline at end of file diff --git a/Assets/Tools/ActionTool/Editor/ActionPreviewEditor.cs b/Assets/Tools/ActionTool/Editor/ActionPreviewEditor.cs index 3699762c..832388e7 100644 --- a/Assets/Tools/ActionTool/Editor/ActionPreviewEditor.cs +++ b/Assets/Tools/ActionTool/Editor/ActionPreviewEditor.cs @@ -358,8 +358,8 @@ namespace ActionTool GUI.Label(new Rect(xr + 150, y, 110, 15), ActionManager.actionData.curAnimTimeNormal.ToString("f2"), styles.textMiddleBold); GUI.Label(new Rect(xl + 150 * 2, y, 105, 15), "Event Frame:", styles.textMiddle); GUI.Label(new Rect(xr + 150 + 125, y, 110, 15), ((int)ActionManager.actionData.curAnimFrame).ToString(), styles.textMiddleBold); - //GUI.Label(new Rect(xl + 150 + 130 + 130, y, 105, 15), "Time:", styles.textMiddle); - //GUI.Label(new Rect(xr + 150 + 130 + 70 , y, 510, 15), ((int)ActionManager.actionData.curAnimFrame).ToString(), styles.textMiddleBold); + GUI.Label(new Rect(xl + 150 + 130 + 130, y, 105, 15), "Time:", styles.textMiddle); + GUI.Label(new Rect(xr + 150 + 130 + 70 , y, 510, 15), (ActionManager.actionData.curAnimTimeNormal * ActionManager.curClip.length).ToString(), styles.textMiddleBold); y += 15; } -- cgit v1.1-26-g67d0