From 85dfff28ddf27f149b4353916eb138a25891b6ca Mon Sep 17 00:00:00 2001 From: FloatGaming <3118444022@qq.com> Date: Wed, 8 Apr 2026 20:53:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E5=BE=88=E5=A4=9A=E6=96=B0?= =?UTF-8?q?=E5=86=85=E5=AE=B9=EF=BC=8C=E8=BF=99=E6=B3=A2=E4=B8=80=E5=9D=97?= =?UTF-8?q?=E4=BA=A4=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Cartoon UI/Icons/Gift Grey.png.meta | 14 +- Assets/DefaultVolumeProfile.asset | 35 + Assets/Resources/itemGet.prefab | 1999 ++++++++++ Assets/Resources/itemGet.prefab.meta | 7 + .../playerdata/playerData_uniqueData.asset | 25 +- .../storeSO/medicines/78001_normalXPb.asset | 2 +- .../storeSO/medicines/78002_mediumXPb.asset | 2 +- .../storeSO/medicines/78003_superiorXPb.asset | 2 +- .../storeSO/medicines/78004_supremeXPb.asset | 2 +- .../medicines/78005_extraordinaryXPb.asset | 2 +- .../storeSO/medicines/78021_dush_normal.asset | 2 +- .../storeSO/medicines/78022_dush_medium.asset | 2 +- .../medicines/78131_eqp_final_material.asset | 2 +- .../medicines/78141_random_memory_shop.asset | 2 +- .../78142_selfchosen_memory_shop.asset | 2 +- .../78144_treasure_memory_shop.asset | 2 +- .../medicines/78145_supreme_memory_shop.asset | 2 +- .../so/uEquip/type0_20260325_00000005.asset | 80 +- Assets/Scenes/Songs_Select.unity | 111 +- Assets/Scenes/UI_UI.unity | 757 +++- Assets/Scenes/gamePlay_gamePlay.unity | 768 +++- Assets/Scenes/gamePlay_gamePlay/gpGV.asset | 151 +- Assets/Settings/Renderer2D.asset | 64 +- Assets/Shaders.meta | 8 + Assets/Shaders/GlobalAfterimage.shader | 42 + Assets/Shaders/GlobalAfterimage.shader.meta | 9 + Assets/Shaders/GlobalDistortion.shader | 52 + Assets/Shaders/GlobalDistortion.shader.meta | 9 + Assets/Shaders/GlobalGlitch.shader | 71 + Assets/Shaders/GlobalGlitch.shader.meta | 9 + Assets/Shaders/GlobalMonochrome.shader | 36 + Assets/Shaders/GlobalMonochrome.shader.meta | 9 + Assets/Sphere.prefab | 4 +- .../1002003_spectrum/CFD/CFD_3.json | 16 +- .../_eqpmtSys/EquipmentTierNameConfig.asset | 4 +- .../equipSystems/chooseSkillPrefab.cs | 30 +- .../equipSystems/eSmelt/equipSmelt.cs | 37 +- Assets/_eqpmtSys/equipmentRandomTestButton.cs | 4 + Assets/_eqpmtSys/esDesPrefab.cs | 21 + Assets/_eqpmtSys/esDesPrefab.prefab | 12 +- Assets/_globalNotices/BansonicItemGet.cs | 253 ++ Assets/_globalNotices/BansonicItemGet.cs.meta | 2 + Assets/itemGet.meta | 8 + Assets/itemGet/get_item_prefab.cs | 43 + Assets/itemGet/get_item_prefab.cs.meta | 2 + Assets/itemGet/get_item_prefab.prefab | 423 ++ Assets/itemGet/get_item_prefab.prefab.meta | 7 + Assets/itemGet/itemGetPrefab.cs | 70 + Assets/itemGet/itemGetPrefab.cs.meta | 2 + Assets/playerBagSystem/UI_userBag.prefab | 42 +- Assets/playerInfoDisplay/UI_Player.prefab | 3388 ++++++++++++++++- .../uAchievement/uAchievementPrefab.prefab | 13 + Assets/playerInfoDisplay/uLevel.cs | 50 + .../uRader/uBehaviourRaderController.cs | 13 +- Assets/playerInfoDisplay/uls.meta | 8 + .../uls/levelRewardPrefab.prefab | 296 ++ .../uls/levelRewardPrefab.prefab.meta | 7 + Assets/playerInfoDisplay/uls/lrPrefab.cs | 184 + Assets/playerInfoDisplay/uls/lrPrefab.cs.meta | 2 + Assets/playerInfoDisplay/uls/uLevel_skills.cs | 415 ++ .../uls/uLevel_skills.cs.meta | 2 + Assets/playerInfoDisplay/uls/ulsSO.asset | 92 + Assets/playerInfoDisplay/uls/ulsSO.asset.meta | 8 + .../uls/userLevel_skills_SO.cs | 20 + .../uls/userLevel_skills_SO.cs.meta | 2 + Assets/scripts/Combat/AllyCombatant.cs | 11 +- Assets/scripts/Combat/EnemyCombatant.cs | 58 + Assets/scripts/Data/EnemyData_SO.cs | 6 +- .../_runtimecache/PlayerEconomyLedger.cs | 14 + .../_runtimecache/PlayerEconomyStorage.cs | 2 +- .../_runtimecache/PlayerSkillService.cs | 652 ++++ .../_runtimecache/PlayerSkillService.cs.meta | 2 + Assets/scripts/dailyTask/dailyTaskManager.cs | 137 +- ...mation_GenerateJudgementSituationPrefab.cs | 130 +- Assets/scripts/gamePlay_gameplay/Beatmap.cs | 1 + .../scripts/gamePlay_gameplay/GameManager.cs | 31 + Assets/scripts/gamePlay_gameplay/HoldNote.cs | 33 +- Assets/scripts/gamePlay_gameplay/Note.cs | 30 +- .../scripts/gamePlay_gameplay/NoteSpawner.cs | 8 +- .../effectEventController.cs | 314 ++ .../effectEventController.cs.meta | 2 + .../gamePlay_gameplay/globalNoteEffect.cs | 361 ++ .../globalNoteEffect.cs.meta | 2 + .../instant/iNumberPrefabController.cs | 81 +- .../instant/playerInstantNumbersPrefab.cs | 25 +- .../gamePlay_gameplay/settlementController.cs | 2 + .../gameplay_teamUI/teamUIController.cs | 290 +- Assets/scripts/rendering.meta | 8 + Assets/scripts/rendering/Editor.meta | 8 + .../Editor/GlobalAfterimageInstaller.cs | 159 + .../Editor/GlobalAfterimageInstaller.cs.meta | 2 + .../Editor/GlobalDistortionInstaller.cs | 167 + .../Editor/GlobalDistortionInstaller.cs.meta | 2 + .../rendering/Editor/GlobalGlitchInstaller.cs | 167 + .../Editor/GlobalGlitchInstaller.cs.meta | 2 + .../Editor/GlobalMonochromeInstaller.cs | 157 + .../Editor/GlobalMonochromeInstaller.cs.meta | 2 + .../GlobalAfterimageRendererFeature.cs | 178 + .../GlobalAfterimageRendererFeature.cs.meta | 2 + .../GlobalAfterimageRuntimeController.cs | 125 + .../GlobalAfterimageRuntimeController.cs.meta | 2 + .../rendering/GlobalAfterimageVolume.cs | 24 + .../rendering/GlobalAfterimageVolume.cs.meta | 2 + .../GlobalDistortionRendererFeature.cs | 185 + .../GlobalDistortionRendererFeature.cs.meta | 2 + .../GlobalDistortionRuntimeController.cs | 238 ++ .../GlobalDistortionRuntimeController.cs.meta | 2 + .../rendering/GlobalDistortionVolume.cs | 36 + .../rendering/GlobalDistortionVolume.cs.meta | 2 + .../rendering/GlobalGlitchRendererFeature.cs | 178 + .../GlobalGlitchRendererFeature.cs.meta | 2 + .../GlobalGlitchRuntimeController.cs | 234 ++ .../GlobalGlitchRuntimeController.cs.meta | 2 + .../scripts/rendering/GlobalGlitchVolume.cs | 36 + .../rendering/GlobalGlitchVolume.cs.meta | 2 + .../GlobalMonochromeRendererFeature.cs | 144 + .../GlobalMonochromeRendererFeature.cs.meta | 2 + .../GlobalMonochromeRuntimeController.cs | 125 + .../GlobalMonochromeRuntimeController.cs.meta | 2 + .../rendering/GlobalMonochromeVolume.cs | 21 + .../rendering/GlobalMonochromeVolume.cs.meta | 2 + Assets/scripts/settings/userSettings.cs | 3 + Assets/storeSystem/storeSystem.cs | 85 + Assets/敌人全部击败图 (1).png | Bin 0 -> 235090 bytes Assets/敌人全部击败图 (1).png.meta | 156 + Assets/未标题-1 (3).png | Bin 0 -> 28538 bytes Assets/未标题-1 (3).png.meta | 598 +++ ProjectSettings/QualitySettings.asset | 4 +- 128 files changed, 14546 insertions(+), 474 deletions(-) create mode 100644 Assets/Resources/itemGet.prefab create mode 100644 Assets/Resources/itemGet.prefab.meta create mode 100644 Assets/Shaders.meta create mode 100644 Assets/Shaders/GlobalAfterimage.shader create mode 100644 Assets/Shaders/GlobalAfterimage.shader.meta create mode 100644 Assets/Shaders/GlobalDistortion.shader create mode 100644 Assets/Shaders/GlobalDistortion.shader.meta create mode 100644 Assets/Shaders/GlobalGlitch.shader create mode 100644 Assets/Shaders/GlobalGlitch.shader.meta create mode 100644 Assets/Shaders/GlobalMonochrome.shader create mode 100644 Assets/Shaders/GlobalMonochrome.shader.meta create mode 100644 Assets/_globalNotices/BansonicItemGet.cs create mode 100644 Assets/_globalNotices/BansonicItemGet.cs.meta create mode 100644 Assets/itemGet.meta create mode 100644 Assets/itemGet/get_item_prefab.cs create mode 100644 Assets/itemGet/get_item_prefab.cs.meta create mode 100644 Assets/itemGet/get_item_prefab.prefab create mode 100644 Assets/itemGet/get_item_prefab.prefab.meta create mode 100644 Assets/itemGet/itemGetPrefab.cs create mode 100644 Assets/itemGet/itemGetPrefab.cs.meta create mode 100644 Assets/playerInfoDisplay/uls.meta create mode 100644 Assets/playerInfoDisplay/uls/levelRewardPrefab.prefab create mode 100644 Assets/playerInfoDisplay/uls/levelRewardPrefab.prefab.meta create mode 100644 Assets/playerInfoDisplay/uls/lrPrefab.cs create mode 100644 Assets/playerInfoDisplay/uls/lrPrefab.cs.meta create mode 100644 Assets/playerInfoDisplay/uls/uLevel_skills.cs create mode 100644 Assets/playerInfoDisplay/uls/uLevel_skills.cs.meta create mode 100644 Assets/playerInfoDisplay/uls/ulsSO.asset create mode 100644 Assets/playerInfoDisplay/uls/ulsSO.asset.meta create mode 100644 Assets/playerInfoDisplay/uls/userLevel_skills_SO.cs create mode 100644 Assets/playerInfoDisplay/uls/userLevel_skills_SO.cs.meta create mode 100644 Assets/scripts/_runtimecache/PlayerSkillService.cs create mode 100644 Assets/scripts/_runtimecache/PlayerSkillService.cs.meta create mode 100644 Assets/scripts/gamePlay_gameplay/effectEventController.cs create mode 100644 Assets/scripts/gamePlay_gameplay/effectEventController.cs.meta create mode 100644 Assets/scripts/gamePlay_gameplay/globalNoteEffect.cs create mode 100644 Assets/scripts/gamePlay_gameplay/globalNoteEffect.cs.meta create mode 100644 Assets/scripts/rendering.meta create mode 100644 Assets/scripts/rendering/Editor.meta create mode 100644 Assets/scripts/rendering/Editor/GlobalAfterimageInstaller.cs create mode 100644 Assets/scripts/rendering/Editor/GlobalAfterimageInstaller.cs.meta create mode 100644 Assets/scripts/rendering/Editor/GlobalDistortionInstaller.cs create mode 100644 Assets/scripts/rendering/Editor/GlobalDistortionInstaller.cs.meta create mode 100644 Assets/scripts/rendering/Editor/GlobalGlitchInstaller.cs create mode 100644 Assets/scripts/rendering/Editor/GlobalGlitchInstaller.cs.meta create mode 100644 Assets/scripts/rendering/Editor/GlobalMonochromeInstaller.cs create mode 100644 Assets/scripts/rendering/Editor/GlobalMonochromeInstaller.cs.meta create mode 100644 Assets/scripts/rendering/GlobalAfterimageRendererFeature.cs create mode 100644 Assets/scripts/rendering/GlobalAfterimageRendererFeature.cs.meta create mode 100644 Assets/scripts/rendering/GlobalAfterimageRuntimeController.cs create mode 100644 Assets/scripts/rendering/GlobalAfterimageRuntimeController.cs.meta create mode 100644 Assets/scripts/rendering/GlobalAfterimageVolume.cs create mode 100644 Assets/scripts/rendering/GlobalAfterimageVolume.cs.meta create mode 100644 Assets/scripts/rendering/GlobalDistortionRendererFeature.cs create mode 100644 Assets/scripts/rendering/GlobalDistortionRendererFeature.cs.meta create mode 100644 Assets/scripts/rendering/GlobalDistortionRuntimeController.cs create mode 100644 Assets/scripts/rendering/GlobalDistortionRuntimeController.cs.meta create mode 100644 Assets/scripts/rendering/GlobalDistortionVolume.cs create mode 100644 Assets/scripts/rendering/GlobalDistortionVolume.cs.meta create mode 100644 Assets/scripts/rendering/GlobalGlitchRendererFeature.cs create mode 100644 Assets/scripts/rendering/GlobalGlitchRendererFeature.cs.meta create mode 100644 Assets/scripts/rendering/GlobalGlitchRuntimeController.cs create mode 100644 Assets/scripts/rendering/GlobalGlitchRuntimeController.cs.meta create mode 100644 Assets/scripts/rendering/GlobalGlitchVolume.cs create mode 100644 Assets/scripts/rendering/GlobalGlitchVolume.cs.meta create mode 100644 Assets/scripts/rendering/GlobalMonochromeRendererFeature.cs create mode 100644 Assets/scripts/rendering/GlobalMonochromeRendererFeature.cs.meta create mode 100644 Assets/scripts/rendering/GlobalMonochromeRuntimeController.cs create mode 100644 Assets/scripts/rendering/GlobalMonochromeRuntimeController.cs.meta create mode 100644 Assets/scripts/rendering/GlobalMonochromeVolume.cs create mode 100644 Assets/scripts/rendering/GlobalMonochromeVolume.cs.meta create mode 100644 Assets/敌人全部击败图 (1).png create mode 100644 Assets/敌人全部击败图 (1).png.meta create mode 100644 Assets/未标题-1 (3).png create mode 100644 Assets/未标题-1 (3).png.meta diff --git a/Assets/Cartoon UI/Icons/Gift Grey.png.meta b/Assets/Cartoon UI/Icons/Gift Grey.png.meta index d405b963..72c49028 100644 --- a/Assets/Cartoon UI/Icons/Gift Grey.png.meta +++ b/Assets/Cartoon UI/Icons/Gift Grey.png.meta @@ -1,5 +1,12 @@ fileFormatVersion: 2 guid: 17f3455809bcc5e4b8cb2398e1ca92a4 +AssetOrigin: + serializedVersion: 1 + productId: 225102 + packageName: Simple Cartoon UI + packageVersion: 1.1 + assetPath: Assets/Cartoon UI/Icons/Gift Grey.png + uploadId: 825882 TextureImporter: internalIDToNameTable: [] externalObjects: {} @@ -128,10 +135,3 @@ TextureImporter: userData: assetBundleName: assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 225102 - packageName: Simple Cartoon UI - packageVersion: 1.1 - assetPath: Assets/Cartoon UI/Icons/Gift Grey.png - uploadId: 825882 diff --git a/Assets/DefaultVolumeProfile.asset b/Assets/DefaultVolumeProfile.asset index 80cdf8f4..db7fdd93 100644 --- a/Assets/DefaultVolumeProfile.asset +++ b/Assets/DefaultVolumeProfile.asset @@ -346,6 +346,7 @@ MonoBehaviour: - {fileID: -665122592112833258} - {fileID: -5415734101822189328} - {fileID: 8032282833275709512} + - {fileID: 564577042516712540} --- !u!114 &446725181531353334 MonoBehaviour: m_ObjectHideFlags: 3 @@ -380,6 +381,40 @@ MonoBehaviour: highlightsEnd: m_OverrideState: 1 m_Value: 1 +--- !u!114 &564577042516712540 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: fcaf02ee66ed11d4d9c67508e0130935, type: 3} + m_Name: GlobalDistortionVolume + m_EditorClassIdentifier: + active: 1 + intensity: + m_OverrideState: 1 + m_Value: 0 + noiseStrength: + m_OverrideState: 1 + m_Value: 0.16 + radialStrength: + m_OverrideState: 1 + m_Value: 0.35 + noiseScale: + m_OverrideState: 1 + m_Value: 12 + center: + m_OverrideState: 1 + m_Value: {x: 0.5, y: 0.5} + edgeFade: + m_OverrideState: 1 + m_Value: 1.25 + affectSceneView: + m_OverrideState: 1 + m_Value: 0 --- !u!114 &757156498526246967 MonoBehaviour: m_ObjectHideFlags: 3 diff --git a/Assets/Resources/itemGet.prefab b/Assets/Resources/itemGet.prefab new file mode 100644 index 00000000..4bf998d1 --- /dev/null +++ b/Assets/Resources/itemGet.prefab @@ -0,0 +1,1999 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &459065170797165375 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4628247373956988850} + - component: {fileID: 6922697396419040292} + - component: {fileID: 4002546814707954931} + m_Layer: 5 + m_Name: tip + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4628247373956988850 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 459065170797165375} + 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: + - {fileID: 4178858187682399047} + m_Father: {fileID: 2695903856409165439} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -360.0865} + m_SizeDelta: {x: 2555.904, y: 839.827} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6922697396419040292 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 459065170797165375} + m_CullTransparentMesh: 1 +--- !u!114 &4002546814707954931 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 459065170797165375} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.3679245, g: 0.3679245, b: 0.3679245, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 1b1e113e4f51df34c981c4ebc66fb1b7, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1742357171781708520 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3570256195684234039} + m_Layer: 5 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3570256195684234039 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1742357171781708520} + 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: + - {fileID: 5421261158389096151} + m_Father: {fileID: 3080657817978365638} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &2037398998238962242 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4178858187682399047} + - component: {fileID: 4449064012623360738} + - component: {fileID: 8943392596634907665} + m_Layer: 5 + m_Name: Text (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4178858187682399047 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2037398998238962242} + 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: 4628247373956988850} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.7311, y: -6.223} + m_SizeDelta: {x: 550.3901, y: 30.7132} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4449064012623360738 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2037398998238962242} + m_CullTransparentMesh: 1 +--- !u!114 &8943392596634907665 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2037398998238962242} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: bd4be44636ad6c24a9b117a7108a75e9, type: 3} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u70B9\u51FB\u7A7A\u767D\u5904\u5173\u95ED" +--- !u!1 &2581237297821411656 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1302327321224459191} + - component: {fileID: 4796631590800447031} + - component: {fileID: 3196188295887288677} + m_Layer: 5 + m_Name: btm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1302327321224459191 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2581237297821411656} + 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: 2695903856409165439} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 3840, y: 2160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4796631590800447031 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2581237297821411656} + m_CullTransparentMesh: 1 +--- !u!114 &3196188295887288677 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2581237297821411656} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.9411765} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &3226815865704221974 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6934276465393290645} + - component: {fileID: 2726226144554038314} + - component: {fileID: 4646503366305594702} + - component: {fileID: 941430051155043272} + m_Layer: 5 + m_Name: close + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &6934276465393290645 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3226815865704221974} + 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: + - {fileID: 4310437646653330338} + m_Father: {fileID: 2695903856409165439} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 1920, y: 1080} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2726226144554038314 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3226815865704221974} + m_CullTransparentMesh: 1 +--- !u!114 &4646503366305594702 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3226815865704221974} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &941430051155043272 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3226815865704221974} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 4646503366305594702} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &3297367270179489037 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1055949575368817678} + - component: {fileID: 8448407042105398006} + m_Layer: 5 + m_Name: itemGet + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1055949575368817678 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3297367270179489037} + 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: + - {fileID: 2695903856409165439} + - {fileID: 3137976730971787751} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &8448407042105398006 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3297367270179489037} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 39b86a94e0f9b43418207c0c1a25c044, type: 3} + m_Name: + m_EditorClassIdentifier: + itemPrefab: {fileID: 913995668709144583, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + displayParent: {fileID: 4944905480159824482} + close: {fileID: 2916651073404800368} +--- !u!1 &3598919913577089389 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4944905480159824482} + - component: {fileID: 5442525640135707676} + m_Layer: 5 + m_Name: Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4944905480159824482 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3598919913577089389} + 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: + - {fileID: 1596126316813462582} + - {fileID: 82931743752242755} + - {fileID: 4111190371966688224} + - {fileID: 8824280870990928386} + - {fileID: 729739858426958435} + - {fileID: 7969126018116620369} + m_Father: {fileID: 1826500657710465024} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &5442525640135707676 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3598919913577089389} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8a8695521f0d02e499659fee002a26c2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: -5 + m_Right: -5 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 1 + m_StartCorner: 0 + m_StartAxis: 0 + m_CellSize: {x: 130, y: 130} + m_Spacing: {x: 15, y: 40} + m_Constraint: 1 + m_ConstraintCount: 6 +--- !u!1 &4051729457364909786 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1826500657710465024} + - component: {fileID: 2962765509531958815} + - component: {fileID: 5017890046463865181} + - component: {fileID: 753265384975313719} + m_Layer: 5 + m_Name: Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1826500657710465024 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4051729457364909786} + 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: + - {fileID: 4944905480159824482} + m_Father: {fileID: 3137976730971787751} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!222 &2962765509531958815 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4051729457364909786} + m_CullTransparentMesh: 1 +--- !u!114 &5017890046463865181 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4051729457364909786} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10917, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &753265384975313719 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4051729457364909786} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!1 &4895337524148275893 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2695903856409165439} + - component: {fileID: 2916651073404800368} + m_Layer: 5 + m_Name: btm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2695903856409165439 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4895337524148275893} + 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: + - {fileID: 1302327321224459191} + - {fileID: 2496328248827362352} + - {fileID: 6934276465393290645} + - {fileID: 4628247373956988850} + m_Father: {fileID: 1055949575368817678} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 1920, y: 1080} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2916651073404800368 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4895337524148275893} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 3196188295887288677} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &6294228602839465243 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 181488986909930859} + - component: {fileID: 4041861373192994877} + - component: {fileID: 3463500139798870594} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &181488986909930859 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6294228602839465243} + 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: 3101227708130590336} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4041861373192994877 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6294228602839465243} + m_CullTransparentMesh: 1 +--- !u!114 &3463500139798870594 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6294228602839465243} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &6500051345530345649 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3137976730971787751} + - component: {fileID: 8600102907497946381} + - component: {fileID: 4059102231336432125} + - component: {fileID: 1661478410141001302} + m_Layer: 5 + m_Name: sv + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3137976730971787751 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6500051345530345649} + 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: + - {fileID: 1826500657710465024} + - {fileID: 1672241082933476089} + - {fileID: 3080657817978365638} + m_Father: {fileID: 1055949575368817678} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 900, y: 500} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8600102907497946381 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6500051345530345649} + m_CullTransparentMesh: 1 +--- !u!114 &4059102231336432125 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6500051345530345649} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &1661478410141001302 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6500051345530345649} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Content: {fileID: 4944905480159824482} + m_Horizontal: 0 + m_Vertical: 1 + m_MovementType: 2 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.4 + m_ScrollSensitivity: 100 + m_Viewport: {fileID: 1826500657710465024} + m_HorizontalScrollbar: {fileID: 6921668007247776155} + m_VerticalScrollbar: {fileID: 3866453231648704550} + m_HorizontalScrollbarVisibility: 0 + m_VerticalScrollbarVisibility: 2 + m_HorizontalScrollbarSpacing: -3 + m_VerticalScrollbarSpacing: -3 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &6644271109833152908 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3080657817978365638} + - component: {fileID: 6227075534320534988} + - component: {fileID: 1392699348527914839} + - component: {fileID: 3866453231648704550} + m_Layer: 5 + m_Name: Scrollbar Vertical + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &3080657817978365638 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6644271109833152908} + 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: + - {fileID: 3570256195684234039} + m_Father: {fileID: 3137976730971787751} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 29.1998, y: 0} + m_SizeDelta: {x: 8.3338, y: 0} + m_Pivot: {x: 1, y: 1} +--- !u!222 &6227075534320534988 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6644271109833152908} + m_CullTransparentMesh: 1 +--- !u!114 &1392699348527914839 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6644271109833152908} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &3866453231648704550 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6644271109833152908} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 5657980246700626223} + m_HandleRect: {fileID: 5421261158389096151} + m_Direction: 2 + m_Value: 0 + m_Size: 1 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &6777543314041494142 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4310437646653330338} + - component: {fileID: 1785146403039749118} + - component: {fileID: 4370086744293707144} + m_Layer: 5 + m_Name: Text (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &4310437646653330338 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6777543314041494142} + 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: 6934276465393290645} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1785146403039749118 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6777543314041494142} + m_CullTransparentMesh: 1 +--- !u!114 &4370086744293707144 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6777543314041494142} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Button +--- !u!1 &7006679892908079683 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2496328248827362352} + - component: {fileID: 8523375773223422963} + - component: {fileID: 7308907727375861115} + m_Layer: 5 + m_Name: title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2496328248827362352 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7006679892908079683} + 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: 2695903856409165439} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 329.55} + m_SizeDelta: {x: 500, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8523375773223422963 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7006679892908079683} + m_CullTransparentMesh: 1 +--- !u!114 &7308907727375861115 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7006679892908079683} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: dfa10de3e2846524089b5073175cd151, type: 3} + m_FontSize: 45 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 4 + m_MaxSize: 45 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u4F60\u5DF2\u83B7\u5F97" +--- !u!1 &7234866528593231560 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5421261158389096151} + - component: {fileID: 3682249896046480784} + - component: {fileID: 5657980246700626223} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5421261158389096151 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7234866528593231560} + 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: 3570256195684234039} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3682249896046480784 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7234866528593231560} + m_CullTransparentMesh: 1 +--- !u!114 &5657980246700626223 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7234866528593231560} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &7564681171698831408 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3101227708130590336} + m_Layer: 5 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3101227708130590336 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7564681171698831408} + 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: + - {fileID: 181488986909930859} + m_Father: {fileID: 1672241082933476089} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &9148149748463285224 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1672241082933476089} + - component: {fileID: 8588795156627840589} + - component: {fileID: 3968461821043129513} + - component: {fileID: 6921668007247776155} + m_Layer: 5 + m_Name: Scrollbar Horizontal + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1672241082933476089 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9148149748463285224} + 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: + - {fileID: 3101227708130590336} + m_Father: {fileID: 3137976730971787751} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 20} + m_Pivot: {x: 0, y: 0} +--- !u!222 &8588795156627840589 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9148149748463285224} + m_CullTransparentMesh: 1 +--- !u!114 &3968461821043129513 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9148149748463285224} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &6921668007247776155 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9148149748463285224} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 3463500139798870594} + m_HandleRect: {fileID: 181488986909930859} + m_Direction: 0 + m_Value: 0 + m_Size: 1 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &363408469818376272 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 4944905480159824482} + m_Modifications: + - target: {fileID: 913995668709144583, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_Name + value: get_item_prefab (2) + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} +--- !u!224 &4111190371966688224 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + m_PrefabInstance: {fileID: 363408469818376272} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &3035535696831035270 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 4944905480159824482} + m_Modifications: + - target: {fileID: 913995668709144583, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_Name + value: get_item_prefab (1) + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} +--- !u!224 &1596126316813462582 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + m_PrefabInstance: {fileID: 3035535696831035270} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &3901939475110660563 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 4944905480159824482} + m_Modifications: + - target: {fileID: 913995668709144583, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_Name + value: get_item_prefab (4) + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} +--- !u!224 &729739858426958435 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + m_PrefabInstance: {fileID: 3901939475110660563} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &4404615220463721971 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 4944905480159824482} + m_Modifications: + - target: {fileID: 913995668709144583, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_Name + value: get_item_prefab (5) + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} +--- !u!224 &82931743752242755 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + m_PrefabInstance: {fileID: 4404615220463721971} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &5075789315670294962 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 4944905480159824482} + m_Modifications: + - target: {fileID: 913995668709144583, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_Name + value: get_item_prefab (3) + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} +--- !u!224 &8824280870990928386 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + m_PrefabInstance: {fileID: 5075789315670294962} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &5953462027062741985 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 4944905480159824482} + m_Modifications: + - target: {fileID: 913995668709144583, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_Name + value: get_item_prefab + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} +--- !u!224 &7969126018116620369 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 4325416963031440304, guid: acdf60e42009ece499bb3c9187c7a120, type: 3} + m_PrefabInstance: {fileID: 5953462027062741985} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Resources/itemGet.prefab.meta b/Assets/Resources/itemGet.prefab.meta new file mode 100644 index 00000000..9acaf13e --- /dev/null +++ b/Assets/Resources/itemGet.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d8cad1f4047312243880d8f3e90872b7 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/playerdata/playerData_uniqueData.asset b/Assets/Resources/playerdata/playerData_uniqueData.asset index e0fdc014..a463fb92 100644 --- a/Assets/Resources/playerdata/playerData_uniqueData.asset +++ b/Assets/Resources/playerdata/playerData_uniqueData.asset @@ -1,4 +1,4 @@ -%YAML 1.1 +%YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!114 &11400000 MonoBehaviour: @@ -12,18 +12,19 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 27e379f45b1bb88449756219caee2f89, type: 3} m_Name: playerData_uniqueData m_EditorClassIdentifier: - player_currentEXP: 0 - player_coins: 9999999 - player_material: 0 - commonExpBottle78001: 0 - mediumExpBottle78002: 0 - superiorExpBottle78003: 0 - supremeExpBottle78004: 0 - extraordinaryExpBottle78005: 0 + player_currentEXP: 802 + player_coins: 999988 + player_material: 486 + player_currentLevel: 0 + commonExpBottle78001: 1 + mediumExpBottle78002: 2 + superiorExpBottle78003: 1 + supremeExpBottle78004: 1 + extraordinaryExpBottle78005: 3 celestialExpBottle78006: 0 - uRankingScore: 0 - dushMaterial78021: 0 - dushMaterial78022: 0 + uRankingScore: 0.6457693 + dushMaterial78021: 1 + dushMaterial78022: 1 dushMaterial78023: 0 dushMaterial78024: 0 firstLaunchDate: 2026-03-16 diff --git a/Assets/Resources/so/storeSO/medicines/78001_normalXPb.asset b/Assets/Resources/so/storeSO/medicines/78001_normalXPb.asset index 265e302d..fd1e4a9c 100644 --- a/Assets/Resources/so/storeSO/medicines/78001_normalXPb.asset +++ b/Assets/Resources/so/storeSO/medicines/78001_normalXPb.asset @@ -39,4 +39,4 @@ MonoBehaviour: - currencyType: 0 amount: 3 unlockRequirements: [] - purchasedCount: 1453 + purchasedCount: 1454 diff --git a/Assets/Resources/so/storeSO/medicines/78002_mediumXPb.asset b/Assets/Resources/so/storeSO/medicines/78002_mediumXPb.asset index 07ac7b00..15c67d2a 100644 --- a/Assets/Resources/so/storeSO/medicines/78002_mediumXPb.asset +++ b/Assets/Resources/so/storeSO/medicines/78002_mediumXPb.asset @@ -39,4 +39,4 @@ MonoBehaviour: - currencyType: 0 amount: 4 unlockRequirements: [] - purchasedCount: 2316 + purchasedCount: 2318 diff --git a/Assets/Resources/so/storeSO/medicines/78003_superiorXPb.asset b/Assets/Resources/so/storeSO/medicines/78003_superiorXPb.asset index 5266b158..3c4865a1 100644 --- a/Assets/Resources/so/storeSO/medicines/78003_superiorXPb.asset +++ b/Assets/Resources/so/storeSO/medicines/78003_superiorXPb.asset @@ -39,4 +39,4 @@ MonoBehaviour: - currencyType: 0 amount: 5 unlockRequirements: [] - purchasedCount: 400 + purchasedCount: 401 diff --git a/Assets/Resources/so/storeSO/medicines/78004_supremeXPb.asset b/Assets/Resources/so/storeSO/medicines/78004_supremeXPb.asset index bc84f146..80e5d0d8 100644 --- a/Assets/Resources/so/storeSO/medicines/78004_supremeXPb.asset +++ b/Assets/Resources/so/storeSO/medicines/78004_supremeXPb.asset @@ -39,4 +39,4 @@ MonoBehaviour: - currencyType: 0 amount: 6 unlockRequirements: [] - purchasedCount: 402 + purchasedCount: 403 diff --git a/Assets/Resources/so/storeSO/medicines/78005_extraordinaryXPb.asset b/Assets/Resources/so/storeSO/medicines/78005_extraordinaryXPb.asset index 3293e612..c40c38fc 100644 --- a/Assets/Resources/so/storeSO/medicines/78005_extraordinaryXPb.asset +++ b/Assets/Resources/so/storeSO/medicines/78005_extraordinaryXPb.asset @@ -39,4 +39,4 @@ MonoBehaviour: - currencyType: 0 amount: 7 unlockRequirements: [] - purchasedCount: 300 + purchasedCount: 303 diff --git a/Assets/Resources/so/storeSO/medicines/78021_dush_normal.asset b/Assets/Resources/so/storeSO/medicines/78021_dush_normal.asset index 29dc9cf8..842cf13c 100644 --- a/Assets/Resources/so/storeSO/medicines/78021_dush_normal.asset +++ b/Assets/Resources/so/storeSO/medicines/78021_dush_normal.asset @@ -39,4 +39,4 @@ MonoBehaviour: - currencyType: 0 amount: 1 unlockRequirements: [] - purchasedCount: 1308 + purchasedCount: 1309 diff --git a/Assets/Resources/so/storeSO/medicines/78022_dush_medium.asset b/Assets/Resources/so/storeSO/medicines/78022_dush_medium.asset index f60d68bc..56d0e2b1 100644 --- a/Assets/Resources/so/storeSO/medicines/78022_dush_medium.asset +++ b/Assets/Resources/so/storeSO/medicines/78022_dush_medium.asset @@ -39,4 +39,4 @@ MonoBehaviour: - currencyType: 0 amount: 2 unlockRequirements: [] - purchasedCount: 1300 + purchasedCount: 1301 diff --git a/Assets/Resources/so/storeSO/medicines/78131_eqp_final_material.asset b/Assets/Resources/so/storeSO/medicines/78131_eqp_final_material.asset index 115b632d..46f17adf 100644 --- a/Assets/Resources/so/storeSO/medicines/78131_eqp_final_material.asset +++ b/Assets/Resources/so/storeSO/medicines/78131_eqp_final_material.asset @@ -39,4 +39,4 @@ MonoBehaviour: - currencyType: 0 amount: 1 unlockRequirements: [] - purchasedCount: 2 + purchasedCount: 3 diff --git a/Assets/Resources/so/storeSO/medicines/78141_random_memory_shop.asset b/Assets/Resources/so/storeSO/medicines/78141_random_memory_shop.asset index 443a41cf..a3868af5 100644 --- a/Assets/Resources/so/storeSO/medicines/78141_random_memory_shop.asset +++ b/Assets/Resources/so/storeSO/medicines/78141_random_memory_shop.asset @@ -39,4 +39,4 @@ MonoBehaviour: - currencyType: 1 amount: 40 unlockRequirements: [] - purchasedCount: 0 + purchasedCount: 1 diff --git a/Assets/Resources/so/storeSO/medicines/78142_selfchosen_memory_shop.asset b/Assets/Resources/so/storeSO/medicines/78142_selfchosen_memory_shop.asset index 12bfd6a3..b694f09f 100644 --- a/Assets/Resources/so/storeSO/medicines/78142_selfchosen_memory_shop.asset +++ b/Assets/Resources/so/storeSO/medicines/78142_selfchosen_memory_shop.asset @@ -39,4 +39,4 @@ MonoBehaviour: - currencyType: 1 amount: 60 unlockRequirements: [] - purchasedCount: 0 + purchasedCount: 1 diff --git a/Assets/Resources/so/storeSO/medicines/78144_treasure_memory_shop.asset b/Assets/Resources/so/storeSO/medicines/78144_treasure_memory_shop.asset index 1f776277..83285831 100644 --- a/Assets/Resources/so/storeSO/medicines/78144_treasure_memory_shop.asset +++ b/Assets/Resources/so/storeSO/medicines/78144_treasure_memory_shop.asset @@ -23,7 +23,7 @@ MonoBehaviour: isOnShelf: 1 canbepurchased: 1 isHot: 0 - user_has_read: 0 + user_has_read: 1 itemType: 3 associatedAllyHero: {fileID: 0} associatedSong: {fileID: 0} diff --git a/Assets/Resources/so/storeSO/medicines/78145_supreme_memory_shop.asset b/Assets/Resources/so/storeSO/medicines/78145_supreme_memory_shop.asset index e100a777..e381aacd 100644 --- a/Assets/Resources/so/storeSO/medicines/78145_supreme_memory_shop.asset +++ b/Assets/Resources/so/storeSO/medicines/78145_supreme_memory_shop.asset @@ -39,4 +39,4 @@ MonoBehaviour: - currencyType: 1 amount: 1000 unlockRequirements: [] - purchasedCount: 0 + purchasedCount: 1 diff --git a/Assets/Resources/so/uEquip/type0_20260325_00000005.asset b/Assets/Resources/so/uEquip/type0_20260325_00000005.asset index 6f975700..289fb403 100644 --- a/Assets/Resources/so/uEquip/type0_20260325_00000005.asset +++ b/Assets/Resources/so/uEquip/type0_20260325_00000005.asset @@ -16,42 +16,78 @@ MonoBehaviour: level: 20 tierNameConfig: {fileID: 11400000, guid: dd40d174875037e439647e54cf81eab1, type: 2} maxHp: - basicGain: 0.086 - cultivationInterval: 0.005 + basicGain: 0.1 + cultivationInterval: 0.045 attack: - basicGain: 0 - cultivationInterval: 0.005 + basicGain: 0.1 + cultivationInterval: 0.045 maxMana: - basicGain: 0 - cultivationInterval: 0.005 + basicGain: 0.1 + cultivationInterval: 0.045 damageResistance: - basicGain: 0 - cultivationInterval: 0.005 + basicGain: 0.1 + cultivationInterval: 0.045 scoreEfficiency: - basicGain: 0.082 - cultivationInterval: 0.005 + basicGain: 0.1 + cultivationInterval: 0.045 specialEffects: - - effectType: 4 - value: 0.03 + - effectType: 0 + value: 999999 + - effectType: 1 + value: 999999 + - effectType: 2 + value: 999999 - effectType: 3 - value: 0.02 + value: 0.9 + - effectType: 4 + value: 0.9 + - effectType: 5 + value: 999999 + - effectType: 6 + value: 999999 + - effectType: 7 + value: -9 - effectType: 8 - value: 0 + value: -9 enableTypeSameEffects: 0 typeSameEffects: - effectType: 0 - value: 0.05 + value: 1 - effectType: 4 - value: 0.05 + value: 1 + - effectType: 2 + value: 1 + - effectType: 3 + value: 1 + - effectType: 4 + value: 1 + - effectType: 5 + value: 1 + - effectType: 6 + value: 1 illusionEffects: - effectType: 0 - value: 60 - - effectType: 3 - value: 0.03 - - effectType: 4 - value: 0.05 + value: 999999 + - effectType: 1 + value: 999999 + - effectType: 2 + value: 999999 maxLevelEffects: - effectType: 0 - value: 0.01 + value: 999999 + - effectType: 1 + value: 999999 + - effectType: 2 + value: 999999 + - effectType: 3 + value: 0.9 + - effectType: 4 + value: 0.9 + - effectType: 5 + value: 999999 + - effectType: 6 + value: 999999 + - effectType: 7 + value: -999999 sa_skillID: 30011005 ia_skillID: 30011006 diff --git a/Assets/Scenes/Songs_Select.unity b/Assets/Scenes/Songs_Select.unity index 17eeedb4..a58452ea 100644 --- a/Assets/Scenes/Songs_Select.unity +++ b/Assets/Scenes/Songs_Select.unity @@ -1451,7 +1451,7 @@ GameObject: m_Component: - component: {fileID: 159785774} - component: {fileID: 159785776} - - component: {fileID: 159785775} + - component: {fileID: 159785777} m_Layer: 5 m_Name: selected_song m_TagString: Untagged @@ -1475,10 +1475,18 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 842, y: 266.1} + m_AnchoredPosition: {x: 848.8, y: 266.1} m_SizeDelta: {x: 200, y: 50} m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &159785775 +--- !u!222 &159785776 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 159785773} + m_CullTransparentMesh: 1 +--- !u!114 &159785777 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1487,7 +1495,7 @@ MonoBehaviour: m_GameObject: {fileID: 159785773} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} @@ -1498,85 +1506,20 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: SELECTED SONG - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: c95ab61f13e39254e8e3cbf4059d88c5, type: 2} - m_sharedMaterial: {fileID: 4492750392876140565, guid: c95ab61f13e39254e8e3cbf4059d88c5, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4294967295 - m_fontColor: {r: 1, g: 1, b: 1, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 18 - m_fontSizeBase: 18 - m_fontWeight: 400 - m_enableAutoSizing: 0 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 1 - m_HorizontalAlignment: 4 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_TextWrappingMode: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_ActiveFontFeatures: 6e72656b - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_EmojiFallbackSupport: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: -304.58203, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!222 &159785776 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 159785773} - m_CullTransparentMesh: 1 + m_FontData: + m_Font: {fileID: 12800000, guid: 8b8373b0af11dca46b89be60dbe469f8, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: S E L E C T E D S O N G --- !u!1 &167571322 GameObject: m_ObjectHideFlags: 0 @@ -20112,7 +20055,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 800.98553, y: 297.84952} + m_AnchoredPosition: {x: 795.1, y: 297.84952} m_SizeDelta: {x: 318.019, y: 50} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &2004358155 diff --git a/Assets/Scenes/UI_UI.unity b/Assets/Scenes/UI_UI.unity index 4670bf59..ef0b56b1 100644 --- a/Assets/Scenes/UI_UI.unity +++ b/Assets/Scenes/UI_UI.unity @@ -6441,7 +6441,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7355357088389577960, guid: 4c26aec0fc471c24d94487eff6821e14, type: 3} propertyPath: m_AnchoredPosition.x - value: 40.03528 + value: 40.035156 objectReference: {fileID: 0} - target: {fileID: 7404914856930740157, guid: 4c26aec0fc471c24d94487eff6821e14, type: 3} propertyPath: m_AnchoredPosition.y @@ -8993,6 +8993,7 @@ RectTransform: - {fileID: 1789653745} - {fileID: 1954473754} - {fileID: 2059429124} + - {fileID: 856610521} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -17676,6 +17677,11 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 854772672} m_CullTransparentMesh: 1 +--- !u!224 &856610521 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1055949575368817678, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + m_PrefabInstance: {fileID: 4452461095071461728} + m_PrefabAsset: {fileID: 0} --- !u!1 &860779071 GameObject: m_ObjectHideFlags: 0 @@ -43959,7 +43965,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: -14.000122, y: -14.205078} + m_AnchoredPosition: {x: -14, y: -14.205078} m_SizeDelta: {x: 0, y: -28.410086} m_Pivot: {x: 0, y: 0.5} --- !u!114 &2057743523 @@ -50202,6 +50208,311 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} +--- !u!1001 &4452461095071461728 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 496948792} + m_Modifications: + - target: {fileID: 82931743752242755, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 82931743752242755, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 82931743752242755, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_SizeDelta.x + value: 130 + objectReference: {fileID: 0} + - target: {fileID: 82931743752242755, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_SizeDelta.y + value: 130 + objectReference: {fileID: 0} + - target: {fileID: 82931743752242755, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchoredPosition.x + value: 229.8331 + objectReference: {fileID: 0} + - target: {fileID: 82931743752242755, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchoredPosition.y + value: -75 + objectReference: {fileID: 0} + - target: {fileID: 181488986909930859, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 181488986909930859, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 729739858426958435, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 729739858426958435, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 729739858426958435, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_SizeDelta.x + value: 130 + objectReference: {fileID: 0} + - target: {fileID: 729739858426958435, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_SizeDelta.y + value: 130 + objectReference: {fileID: 0} + - target: {fileID: 729739858426958435, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchoredPosition.x + value: 664.8331 + objectReference: {fileID: 0} + - target: {fileID: 729739858426958435, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchoredPosition.y + value: -75 + objectReference: {fileID: 0} + - target: {fileID: 1055949575368817678, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1055949575368817678, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1055949575368817678, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchorMax.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1055949575368817678, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchorMax.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1055949575368817678, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchorMin.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1055949575368817678, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchorMin.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1055949575368817678, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_SizeDelta.x + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 1055949575368817678, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_SizeDelta.y + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 1055949575368817678, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1055949575368817678, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1055949575368817678, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1055949575368817678, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1055949575368817678, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1055949575368817678, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1055949575368817678, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1055949575368817678, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1055949575368817678, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1055949575368817678, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1055949575368817678, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1055949575368817678, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1596126316813462582, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1596126316813462582, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1596126316813462582, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_SizeDelta.x + value: 130 + objectReference: {fileID: 0} + - target: {fileID: 1596126316813462582, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_SizeDelta.y + value: 130 + objectReference: {fileID: 0} + - target: {fileID: 1596126316813462582, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchoredPosition.x + value: 84.8331 + objectReference: {fileID: 0} + - target: {fileID: 1596126316813462582, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchoredPosition.y + value: -75 + objectReference: {fileID: 0} + - target: {fileID: 1672241082933476089, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1672241082933476089, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_SizeDelta.x + value: -5.3338003 + objectReference: {fileID: 0} + - target: {fileID: 1826500657710465024, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1826500657710465024, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1826500657710465024, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_SizeDelta.x + value: -5.3338003 + objectReference: {fileID: 0} + - target: {fileID: 1826500657710465024, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3080657817978365638, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3080657817978365638, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3297367270179489037, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_Name + value: itemGet + objectReference: {fileID: 0} + - target: {fileID: 3297367270179489037, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4111190371966688224, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4111190371966688224, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4111190371966688224, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_SizeDelta.x + value: 130 + objectReference: {fileID: 0} + - target: {fileID: 4111190371966688224, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_SizeDelta.y + value: 130 + objectReference: {fileID: 0} + - target: {fileID: 4111190371966688224, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchoredPosition.x + value: 374.8331 + objectReference: {fileID: 0} + - target: {fileID: 4111190371966688224, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchoredPosition.y + value: -75 + objectReference: {fileID: 0} + - target: {fileID: 4944905480159824482, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5421261158389096151, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5421261158389096151, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5421261158389096151, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchorMin.y + value: 0.6 + objectReference: {fileID: 0} + - target: {fileID: 7969126018116620369, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7969126018116620369, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7969126018116620369, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_SizeDelta.x + value: 130 + objectReference: {fileID: 0} + - target: {fileID: 7969126018116620369, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_SizeDelta.y + value: 130 + objectReference: {fileID: 0} + - target: {fileID: 7969126018116620369, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchoredPosition.x + value: 809.8331 + objectReference: {fileID: 0} + - target: {fileID: 7969126018116620369, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchoredPosition.y + value: -75 + objectReference: {fileID: 0} + - target: {fileID: 8824280870990928386, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8824280870990928386, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8824280870990928386, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_SizeDelta.x + value: 130 + objectReference: {fileID: 0} + - target: {fileID: 8824280870990928386, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_SizeDelta.y + value: 130 + objectReference: {fileID: 0} + - target: {fileID: 8824280870990928386, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchoredPosition.x + value: 519.8331 + objectReference: {fileID: 0} + - target: {fileID: 8824280870990928386, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_AnchoredPosition.y + value: -75 + objectReference: {fileID: 0} + - target: {fileID: 9148149748463285224, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d8cad1f4047312243880d8f3e90872b7, type: 3} --- !u!4 &4555079430303663727 Transform: m_ObjectHideFlags: 0 @@ -53158,39 +53469,39 @@ PrefabInstance: m_Modifications: - target: {fileID: 156882612442970315, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 156882612442970315, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 156882612442970315, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_SizeDelta.x - value: 205 + value: 0 objectReference: {fileID: 0} - target: {fileID: 156882612442970315, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_SizeDelta.y - value: 55 + value: 0 objectReference: {fileID: 0} - target: {fileID: 156882612442970315, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchoredPosition.x - value: 312.5 + value: 0 objectReference: {fileID: 0} - target: {fileID: 156882612442970315, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchoredPosition.y - value: -32.5 + value: 0 objectReference: {fileID: 0} - target: {fileID: 157135823967813188, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMax.x - value: 0.2 + value: 0 objectReference: {fileID: 0} - target: {fileID: 157135823967813188, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 157135823967813188, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMin.x - value: 0.2 + value: 0 objectReference: {fileID: 0} - target: {fileID: 531891762775670779, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMax.x @@ -53202,60 +53513,120 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 689578755320625068, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_SizeDelta.y - value: 30 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1153847484014746243, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1153847484014746243, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1153847484014746243, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchoredPosition.x - value: 351.855 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1153847484014746243, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchoredPosition.y - value: -15 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1347022823836729467, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1347022823836729467, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1347022823836729467, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1347022823836729467, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 1387473703775913452, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1387473703775913452, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1387473703775913452, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_SizeDelta.x - value: 205 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1387473703775913452, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_SizeDelta.y - value: 55 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1387473703775913452, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchoredPosition.x - value: 107.5 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1387473703775913452, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchoredPosition.y - value: -142.5 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1643098524013219997, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMax.x - value: 0.2 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1643098524013219997, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1835220823595840135, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2034682090639879132, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2674808321077856623, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2674808321077856623, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2674808321077856623, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2674808321077856623, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 2811931616023061721, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} + - target: {fileID: 2872780746638323053, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2872780746638323053, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2921030353387055411, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2921030353387055411, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2921030353387055411, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} - target: {fileID: 3033406375213441124, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_Pivot.x value: 0.5 @@ -53336,6 +53707,70 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 3219775947742724870, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3219775947742724870, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3219775947742724870, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3219775947742724870, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3536537773565864944, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3536537773565864944, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3536537773565864944, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3536537773565864944, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3590891195598464121, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3590891195598464121, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3590891195598464121, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3590891195598464121, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4024984849675195436, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4024984849675195436, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4024984849675195436, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4024984849675195436, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} - target: {fileID: 4092355085524374550, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMax.x value: 0 @@ -53354,7 +53789,15 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4147359555220220930, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_SizeDelta.x - value: -323.747 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4214572622581633858, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4214572622581633858, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMax.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 4564721723419403790, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMax.y @@ -53364,17 +53807,61 @@ PrefabInstance: propertyPath: m_SizeDelta.y value: -4.107 objectReference: {fileID: 0} + - target: {fileID: 4594329760191535907, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4594329760191535907, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4594329760191535907, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4594329760191535907, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4865054498376321125, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4865054498376321125, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4865054498376321125, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4865054498376321125, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} - target: {fileID: 4956550772542867695, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMax.x - value: 0.5 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4956550772542867695, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4956550772542867695, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMin.x - value: 0.5 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5039868922226137102, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5039868922226137102, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5039868922226137102, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMin.x + value: 0 objectReference: {fileID: 0} - target: {fileID: 5155954718781159675, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_Name @@ -53382,67 +53869,115 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5155954718781159675, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_IsActive - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5555168989658004631, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMax.x - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 5555168989658004631, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 5555168989658004631, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_SizeDelta.y - value: -4.107 + value: 0 objectReference: {fileID: 0} - target: {fileID: 5601499556584184233, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 5601499556584184233, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 5601499556584184233, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_SizeDelta.x - value: 205 + value: 0 objectReference: {fileID: 0} - target: {fileID: 5601499556584184233, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_SizeDelta.y - value: 55 + value: 0 objectReference: {fileID: 0} - target: {fileID: 5601499556584184233, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchoredPosition.x - value: 107.5 + value: 0 objectReference: {fileID: 0} - target: {fileID: 5601499556584184233, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchoredPosition.y - value: -87.5 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5752085606370037636, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5752085606370037636, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5752085606370037636, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5752085606370037636, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 6089060919291086644, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6089060919291086644, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6089060919291086644, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_SizeDelta.x - value: 205 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6089060919291086644, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_SizeDelta.y - value: 55 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6089060919291086644, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchoredPosition.x - value: 312.5 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6089060919291086644, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchoredPosition.y - value: -142.5 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6411648460242401406, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6411648460242401406, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6411648460242401406, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6411648460242401406, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6863755756414146199, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6863755756414146199, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6863755756414146199, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6863755756414146199, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7527663711127080928, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMax.y @@ -53452,29 +53987,61 @@ PrefabInstance: propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} + - target: {fileID: 7616367069952889789, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7616367069952889789, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7616367069952889789, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7616367069952889789, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} - target: {fileID: 7729840789978718274, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7729840789978718274, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7729840789978718274, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_SizeDelta.x - value: 205 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7729840789978718274, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_SizeDelta.y - value: 55 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7729840789978718274, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchoredPosition.x - value: 107.5 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7729840789978718274, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchoredPosition.y - value: -32.5 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7734175328877407531, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7734175328877407531, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7734175328877407531, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7734175328877407531, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 7793934998563548936, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMax.x @@ -53486,35 +54053,83 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7800923257200747963, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7800923257200747963, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7800923257200747963, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_SizeDelta.x - value: 205 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7800923257200747963, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_SizeDelta.y - value: 55 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7800923257200747963, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchoredPosition.x - value: 312.5 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7800923257200747963, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchoredPosition.y - value: -87.5 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7855297809422646246, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7855297809422646246, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7855297809422646246, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7855297809422646246, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7962970098340026786, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7962970098340026786, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7962970098340026786, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7962970098340026786, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8307356329505039735, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8307356329505039735, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8307356329505039735, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8307356329505039735, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 objectReference: {fileID: 0} - target: {fileID: 8338767195980337933, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMax.x - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 8338767195980337933, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 8352834592111450213, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMax.x @@ -53524,17 +54139,37 @@ PrefabInstance: propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} + - target: {fileID: 8391186048360976457, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8391186048360976457, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8391186048360976457, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8391186048360976457, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} - target: {fileID: 8501325019593175148, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_SizeDelta.x - value: 400 + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9022595105004172016, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} + propertyPath: m_IsActive + value: 1 objectReference: {fileID: 0} - target: {fileID: 9139003811205042356, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMax.x - value: 0.5 + value: 0 objectReference: {fileID: 0} - target: {fileID: 9139003811205042356, guid: 18f4d2367ef2dff429599f1580fd6bad, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] diff --git a/Assets/Scenes/gamePlay_gamePlay.unity b/Assets/Scenes/gamePlay_gamePlay.unity index 751428cc..df3906d8 100644 --- a/Assets/Scenes/gamePlay_gamePlay.unity +++ b/Assets/Scenes/gamePlay_gamePlay.unity @@ -153,9 +153,9 @@ RectTransform: - {fileID: 392380760} m_Father: {fileID: 425295052} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: -18.034874} m_SizeDelta: {x: 100, y: 10} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &2178223 @@ -1124,7 +1124,7 @@ Transform: m_GameObject: {fileID: 37978153} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 1125.844, y: 606.4, z: 0} + m_LocalPosition: {x: 1133.54, y: 606.4, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: @@ -2682,9 +2682,9 @@ RectTransform: - {fileID: 1579840624} m_Father: {fileID: 1181698751} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 307.76, y: -60.5} m_SizeDelta: {x: 100, y: 100} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &140317858 @@ -3276,7 +3276,8 @@ Transform: m_LocalPosition: {x: 6.132826, y: 34.39155, z: -0.72078687} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] + m_Children: + - {fileID: 2011564771} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &154923898 @@ -4070,7 +4071,7 @@ RectTransform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 182107133} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -0.050642088} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -4078,8 +4079,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 1033.3794, y: 540.8854} - m_SizeDelta: {x: 351, y: 705} + m_AnchoredPosition: {x: 1027.4, y: 557.0127} + m_SizeDelta: {x: 323.634, y: 650.035} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &182107135 MonoBehaviour: @@ -10072,9 +10073,9 @@ RectTransform: - {fileID: 1328532447} m_Father: {fileID: 590261241} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 81, y: -50} m_SizeDelta: {x: 162, y: 100} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &228531561 @@ -10524,9 +10525,9 @@ RectTransform: - {fileID: 807575964} m_Father: {fileID: 590261241} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 606, y: -50} m_SizeDelta: {x: 162, y: 100} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &247015384 @@ -12176,7 +12177,7 @@ RectTransform: m_Father: {fileID: 1374351887} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 20, y: 20} m_Pivot: {x: 0.5, y: 0.5} @@ -12587,9 +12588,9 @@ RectTransform: m_Children: [] m_Father: {fileID: 1121766410} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 43, y: -50} m_SizeDelta: {x: 10, y: 12} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &315535051 @@ -12707,7 +12708,7 @@ SpriteRenderer: m_SortingLayer: 0 m_SortingOrder: -998 m_Sprite: {fileID: 21300000, guid: 73b3dfa9754af06409b9d0666cbd824f, type: 3} - m_Color: {r: 0.8050314, g: 0.8050314, b: 0.8050314, a: 0.8117647} + m_Color: {r: 0.8050314, g: 0.8050314, b: 0.8050314, a: 0.39215687} m_FlipX: 0 m_FlipY: 0 m_DrawMode: 0 @@ -12938,7 +12939,7 @@ MonoBehaviour: sortingLayerName: Particles sortingOrder: -667 renderQueueOffset: 0 - baseEmitRate: 15 + baseEmitRate: 1000 emitBatchSize: 2 chaosRandomDelay: 0.05 spawnOffsetX: 0.5 @@ -12949,7 +12950,7 @@ MonoBehaviour: particleParent: {fileID: 885394780} musicSource: {fileID: 845021791} beatmapManager: {fileID: 1261342020} - useAudioAnalysis: 1 + useAudioAnalysis: 0 audioSensitivity: 0.5 audioEmitBoost: 50 --- !u!1 &322497709 @@ -14106,9 +14107,9 @@ RectTransform: - {fileID: 55210105} m_Father: {fileID: 1181698751} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: -60.5} m_SizeDelta: {x: 100, y: 100} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &354769595 @@ -14721,6 +14722,7 @@ MonoBehaviour: objectFather_enemy: {fileID: 1128572621} isEnemy_active: 1 currentEnemy_characterImage: {fileID: 1594358584} + allEnemiesDefeatedSprite: {fileID: 21300000, guid: 483a8d87b3322524ead7834c010b24e9, type: 3} currentEnemy_healthImage: {fileID: 1722839482} currentEnemy_fadehealthImage: {fileID: 1166013842} currentEnemy_manaImage: {fileID: 473627601} @@ -14733,6 +14735,8 @@ MonoBehaviour: totalEnemy_healthRate: {fileID: 1280009491} currentEnemy_manaRate: {fileID: 97094229} currentEnemy_current_scoreText: {fileID: 0} + currentEnemy_bountyObject: {fileID: 1786286394} + currentEnemy_bountyText: {fileID: 1241953576} enemy_id: 0 currentEnemy_hurtRedImage: {fileID: 182107135} enemyList_rateText: {fileID: 343032544} @@ -16405,9 +16409,9 @@ RectTransform: - {fileID: 81893893} m_Father: {fileID: 1181698751} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 178.88, y: -60.5} m_SizeDelta: {x: 100, y: 100} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &405968940 @@ -28817,13 +28821,13 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 754533168} serializedVersion: 2 - m_LocalRotation: {x: -0.34218413, y: 0, z: 0, w: 0.93963295} + m_LocalRotation: {x: -0.3420201, y: 0, z: 0, w: 0.9396927} m_LocalPosition: {x: 0, y: -6.77, z: -8} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: -40.02, y: 0, z: 0} + m_LocalEulerAnglesHint: {x: -40, y: 0, z: 0} --- !u!114 &754533172 MonoBehaviour: m_ObjectHideFlags: 0 @@ -28841,14 +28845,14 @@ MonoBehaviour: m_RequiresOpaqueTextureOption: 2 m_CameraType: 0 m_Cameras: [] - m_RendererIndex: -1 + m_RendererIndex: 0 m_VolumeLayerMask: serializedVersion: 2 m_Bits: 1 m_VolumeTrigger: {fileID: 0} m_VolumeFrameworkUpdateModeOption: 0 m_RenderPostProcessing: 1 - m_Antialiasing: 0 + m_Antialiasing: 1 m_AntialiasingQuality: 2 m_StopNaN: 0 m_Dithering: 0 @@ -32261,7 +32265,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!4 &874962972 Transform: m_ObjectHideFlags: 0 @@ -34467,9 +34471,9 @@ RectTransform: m_Father: {fileID: 725274684} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 20} + m_SizeDelta: {x: -4.44, y: 20} m_Pivot: {x: 0, y: 0} --- !u!114 &985131518 MonoBehaviour: @@ -34694,9 +34698,9 @@ RectTransform: - {fileID: 841673123} m_Father: {fileID: 590261241} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 256, y: -50} m_SizeDelta: {x: 162, y: 100} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &999995736 @@ -35816,6 +35820,108 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1037184902} m_CullTransparentMesh: 1 +--- !u!1 &1038854467 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1038854468} + - component: {fileID: 1038854471} + - component: {fileID: 1038854470} + - component: {fileID: 1038854469} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1038854468 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1038854467} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1091682804} + m_Father: {fileID: 2011564771} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1038854469 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1038854467} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1038854470 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1038854467} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1920, y: 1080} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1038854471 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1038854467} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 1 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 --- !u!1 &1040113990 GameObject: m_ObjectHideFlags: 0 @@ -37610,6 +37716,81 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1090666513} m_CullTransparentMesh: 1 +--- !u!1 &1091682803 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1091682804} + - component: {fileID: 1091682806} + - component: {fileID: 1091682805} + m_Layer: 5 + m_Name: white + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1091682804 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1091682803} + 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: 1038854468} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 1920, y: 1080} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1091682805 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1091682803} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1091682806 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1091682803} + m_CullTransparentMesh: 1 --- !u!1 &1095155640 GameObject: m_ObjectHideFlags: 0 @@ -38821,6 +39002,7 @@ Transform: - {fileID: 37978155} - {fileID: 596648381} - {fileID: 1366129911} + - {fileID: 1786286395} m_Father: {fileID: 595209177} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1130297186 @@ -39225,9 +39407,9 @@ RectTransform: - {fileID: 208898303} m_Father: {fileID: 425295052} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: -5} m_SizeDelta: {x: 100, y: 10} m_Pivot: {x: 0.5, y: 0.5} --- !u!4 &1154758974 stripped @@ -41347,6 +41529,85 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &1241953574 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1241953575} + - component: {fileID: 1241953577} + - component: {fileID: 1241953576} + m_Layer: 5 + m_Name: num + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1241953575 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1241953574} + 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: 1786286395} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 1008.39496, y: 769.29} + m_SizeDelta: {x: 242.99, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1241953576 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1241953574} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.20784315, g: 0.8235295, b: 0.9803922, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 8b8373b0af11dca46b89be60dbe469f8, type: 3} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 2147483647 +--- !u!222 &1241953577 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1241953574} + m_CullTransparentMesh: 1 --- !u!1 &1247751243 GameObject: m_ObjectHideFlags: 0 @@ -43258,6 +43519,85 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1304513973} m_CullTransparentMesh: 1 +--- !u!1 &1311317795 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1311317796} + - component: {fileID: 1311317798} + - component: {fileID: 1311317797} + m_Layer: 5 + m_Name: title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1311317796 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1311317795} + 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: 1786286395} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 801.3, y: 769.29} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1311317797 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1311317795} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.20784315, g: 0.8235295, b: 0.9803922, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: dfa10de3e2846524089b5073175cd151, type: 3} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u60AC\u8D4F" +--- !u!222 &1311317798 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1311317795} + m_CullTransparentMesh: 1 --- !u!1 &1312836675 GameObject: m_ObjectHideFlags: 0 @@ -43301,7 +43641,7 @@ GameObject: m_Component: - component: {fileID: 1314881466} m_Layer: 7 - m_Name: groundParticularController + m_Name: groundParticular m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -46699,9 +47039,9 @@ RectTransform: - {fileID: 1740052537} m_Father: {fileID: 1181698751} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 436.64, y: -60.5} m_SizeDelta: {x: 100, y: 100} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &1454903926 @@ -48964,7 +49304,7 @@ MonoBehaviour: sortingLayerName: Particles sortingOrder: -667 renderQueueOffset: 0 - baseEmitRate: 15 + baseEmitRate: 1000 emitBatchSize: 2 chaosRandomDelay: 0.05 spawnOffsetX: 0.5 @@ -50133,7 +50473,7 @@ RectTransform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1594358582} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -0.050642088} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -50141,8 +50481,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 1033.3794, y: 540.8854} - m_SizeDelta: {x: 322, y: 705} + m_AnchoredPosition: {x: 1027.4, y: 557.0127} + m_SizeDelta: {x: 296.896, y: 650.035} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1594358584 MonoBehaviour: @@ -50164,7 +50504,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: -1827779923014328232, guid: f8bc21467dc669541b93f8fd2f96d547, type: 3} + m_Sprite: {fileID: 21300000, guid: 483a8d87b3322524ead7834c010b24e9, type: 3} m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 @@ -50903,9 +51243,9 @@ RectTransform: m_Children: [] m_Father: {fileID: 1121766410} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 24, y: -50} m_SizeDelta: {x: 10, y: 12} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1628161349 @@ -51442,9 +51782,9 @@ RectTransform: m_Father: {fileID: 725274684} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} + m_SizeDelta: {x: -4.44, y: 0} m_Pivot: {x: 0, y: 1} --- !u!114 &1658081545 MonoBehaviour: @@ -52518,9 +52858,9 @@ RectTransform: - {fileID: 1461351369} m_Father: {fileID: 590261241} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 431, y: -50} m_SizeDelta: {x: 162, y: 100} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &1705000562 @@ -54221,9 +54561,9 @@ RectTransform: - {fileID: 578526358} m_Father: {fileID: 425295052} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: -31.069748} m_SizeDelta: {x: 100, y: 10} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &1771996335 @@ -54451,6 +54791,39 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1775729903} m_CullTransparentMesh: 1 +--- !u!1 &1786286394 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1786286395} + m_Layer: 5 + m_Name: xuanshang + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1786286395 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1786286394} + 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: + - {fileID: 1311317796} + - {fileID: 1241953575} + m_Father: {fileID: 1128572622} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1799628404 GameObject: m_ObjectHideFlags: 0 @@ -56799,9 +57172,9 @@ RectTransform: - {fileID: 616492490} m_Father: {fileID: 425295052} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: -44.10462} m_SizeDelta: {x: 100, y: 10} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &1904135294 @@ -57522,7 +57895,7 @@ Canvas: m_AdditionalShaderChannelsFlag: 0 m_UpdateRectTransformForStandalone: 0 m_SortingLayerID: 0 - m_SortingOrder: 1233 + m_SortingOrder: -997 m_TargetDisplay: 0 --- !u!224 &1929342808 RectTransform: @@ -59308,6 +59681,109 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2010366510} m_CullTransparentMesh: 1 +--- !u!1 &2011564770 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2011564771} + - component: {fileID: 2011564772} + - component: {fileID: 2011564773} + m_Layer: 0 + m_Name: effectEvents + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2011564771 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2011564770} + 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: + - {fileID: 1038854468} + m_Father: {fileID: 150341768} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2011564772 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2011564770} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f65edb710af433c479467d8c932e5d59, type: 3} + m_Name: + m_EditorClassIdentifier: + enableMultiNoteScreenShake: 1 + multiNoteScreenShakeAmplitude: 0.04 + enableCameraDrift: 1 + cameraDriftRange: {x: 0.5, y: 0.4} + cameraDriftSpeed: 0.5 + playerSkillCameraOffsetAmount: -0.75 + playerSkillCameraOffsetAxis: 2 +--- !u!114 &2011564773 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2011564770} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7aad6dbb8ac9a574b832837614506af8, type: 3} + m_Name: + m_EditorClassIdentifier: + cameraShakeAmplitude: 0.12 + flashBlinkImage: {fileID: 1091682805} + flashBlinkFadeDuration: 0.2 + targetCameraZPosition: 1 + cameraDashCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 2 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + cameraDashDuration: 0.075 + cameraWaveEnterDuration: 0.05 + cameraWaveRecoverDuration: 0.05 + cameraGlitchEnterDuration: 0.05 + cameraGlitchRecoverDuration: 0.05 + cameraMonochromeEnterDuration: 0.1 + cameraMonochromeRecoverDuration: 0.14 + screenshotScaleStartOpacity: 0.5 + screenshotScaleFadeDuration: 0.22 + screenshotScaleEndScale: 1.5 --- !u!1 &2015034641 GameObject: m_ObjectHideFlags: 0 @@ -59782,9 +60258,9 @@ RectTransform: m_Children: [] m_Father: {fileID: 1121766410} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 5, y: -50} m_SizeDelta: {x: 10, y: 12} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &2043797911 @@ -67699,115 +68175,115 @@ PrefabInstance: m_Modifications: - target: {fileID: 122756198372604741, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 122756198372604741, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 122756198372604741, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 50 objectReference: {fileID: 0} - target: {fileID: 122756198372604741, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -108.729996 objectReference: {fileID: 0} - target: {fileID: 187557561287668015, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 187557561287668015, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 187557561287668015, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 85 objectReference: {fileID: 0} - target: {fileID: 187557561287668015, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -50 objectReference: {fileID: 0} - target: {fileID: 412937744056933375, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 412937744056933375, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 412937744056933375, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 17.5 objectReference: {fileID: 0} - target: {fileID: 412937744056933375, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -50 objectReference: {fileID: 0} - target: {fileID: 678618177608988214, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 678618177608988214, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 678618177608988214, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 17.5 objectReference: {fileID: 0} - target: {fileID: 678618177608988214, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -50 objectReference: {fileID: 0} - target: {fileID: 796738331562133123, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 796738331562133123, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 796738331562133123, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 100 objectReference: {fileID: 0} - target: {fileID: 796738331562133123, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -53.66 objectReference: {fileID: 0} - target: {fileID: 1813990329505698292, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 1813990329505698292, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 1813990329505698292, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 50 objectReference: {fileID: 0} - target: {fileID: 1813990329505698292, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -25 objectReference: {fileID: 0} - target: {fileID: 2418429837761252522, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2418429837761252522, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2418429837761252522, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 100 objectReference: {fileID: 0} - target: {fileID: 2418429837761252522, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -25 objectReference: {fileID: 0} - target: {fileID: 2613971938742376913, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_Pivot.x @@ -67823,7 +68299,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2613971938742376913, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2613971938742376913, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.x @@ -67831,7 +68307,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2613971938742376913, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2613971938742376913, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_SizeDelta.x @@ -67871,11 +68347,11 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2613971938742376913, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 50 objectReference: {fileID: 0} - target: {fileID: 2613971938742376913, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -50 objectReference: {fileID: 0} - target: {fileID: 2613971938742376913, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_LocalEulerAnglesHint.x @@ -67907,19 +68383,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2770405465405990285, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2770405465405990285, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2770405465405990285, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 12.5 objectReference: {fileID: 0} - target: {fileID: 2770405465405990285, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -50 objectReference: {fileID: 0} - target: {fileID: 4148755058004053777, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y @@ -67927,35 +68403,35 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4704552103312105881, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 4704552103312105881, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 4704552103312105881, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 17.5 objectReference: {fileID: 0} - target: {fileID: 4704552103312105881, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -50 objectReference: {fileID: 0} - target: {fileID: 4821968732813134168, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 4821968732813134168, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 4821968732813134168, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 17.5 objectReference: {fileID: 0} - target: {fileID: 4821968732813134168, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -50 objectReference: {fileID: 0} - target: {fileID: 4929852368789569139, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y @@ -67975,67 +68451,67 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5213525157689929386, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5213525157689929386, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5213525157689929386, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 50 objectReference: {fileID: 0} - target: {fileID: 5213525157689929386, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -80.82 objectReference: {fileID: 0} - target: {fileID: 5278958300364593933, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5278958300364593933, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5278958300364593933, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 50 objectReference: {fileID: 0} - target: {fileID: 5278958300364593933, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -52.91 objectReference: {fileID: 0} - target: {fileID: 6349925019039213472, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 6349925019039213472, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 6349925019039213472, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 85 objectReference: {fileID: 0} - target: {fileID: 6349925019039213472, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -50 objectReference: {fileID: 0} - target: {fileID: 6354168271256631497, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 6354168271256631497, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 6354168271256631497, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 85 objectReference: {fileID: 0} - target: {fileID: 6354168271256631497, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -50 objectReference: {fileID: 0} - target: {fileID: 6494845825576441926, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_LocalPosition.z @@ -68059,19 +68535,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6964822682335917845, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 6964822682335917845, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 6964822682335917845, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 84.55 objectReference: {fileID: 0} - target: {fileID: 6964822682335917845, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -50 objectReference: {fileID: 0} - target: {fileID: 7228302987943925696, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.x @@ -68099,19 +68575,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7489680557431120668, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 7489680557431120668, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 7489680557431120668, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 84.55 objectReference: {fileID: 0} - target: {fileID: 7489680557431120668, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -50 objectReference: {fileID: 0} - target: {fileID: 7889622464149315732, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_IsActive @@ -68119,19 +68595,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8162043787242817865, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 8162043787242817865, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 8162043787242817865, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 85 objectReference: {fileID: 0} - target: {fileID: 8162043787242817865, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -50 objectReference: {fileID: 0} - target: {fileID: 8281064337243533176, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y @@ -68151,19 +68627,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8790025443345388889, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 8790025443345388889, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 8790025443345388889, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 12.5 objectReference: {fileID: 0} - target: {fileID: 8790025443345388889, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -50 objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] diff --git a/Assets/Scenes/gamePlay_gamePlay/gpGV.asset b/Assets/Scenes/gamePlay_gamePlay/gpGV.asset index 5ce0bad6..091d3eaf 100644 --- a/Assets/Scenes/gamePlay_gamePlay/gpGV.asset +++ b/Assets/Scenes/gamePlay_gamePlay/gpGV.asset @@ -1,6 +1,6 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!114 &-3594275912957905754 +--- !u!114 &-4028999061945789234 MonoBehaviour: m_ObjectHideFlags: 3 m_CorrespondingSourceObject: {fileID: 0} @@ -9,22 +9,31 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ccf1aba9553839d41ae37dd52e9ebcce, type: 3} - m_Name: MotionBlur + m_Script: {fileID: 11500000, guid: 54a30677f5d2e4548881a79f4c3e3972, type: 3} + m_Name: GlobalGlitchVolume m_EditorClassIdentifier: - active: 0 - mode: - m_OverrideState: 1 - m_Value: 1 - quality: - m_OverrideState: 1 - m_Value: 1 + active: 1 intensity: m_OverrideState: 1 - m_Value: 0.476 - clamp: + m_Value: 0 + blockStrength: m_OverrideState: 1 - m_Value: 0.118 + m_Value: 0.297 + colorSplit: + m_OverrideState: 1 + m_Value: 0.0128 + jitterAmount: + m_OverrideState: 1 + m_Value: 1 + stripFrequency: + m_OverrideState: 1 + m_Value: 213 + scanlineStrength: + m_OverrideState: 1 + m_Value: 0.527 + affectSceneView: + m_OverrideState: 1 + m_Value: 0 --- !u!114 &11400000 MonoBehaviour: m_ObjectHideFlags: 0 @@ -38,4 +47,118 @@ MonoBehaviour: m_Name: gpGV m_EditorClassIdentifier: components: - - {fileID: -3594275912957905754} + - {fileID: 2046802184354103511} + - {fileID: 2590790448571127267} + - {fileID: -4028999061945789234} + - {fileID: 1487594879138804974} + - {fileID: 9136543105356401684} + - {fileID: 0} +--- !u!114 &1487594879138804974 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 29fa0085f50d5e54f8144f766051a691, type: 3} + m_Name: FilmGrain + m_EditorClassIdentifier: + active: 1 + type: + m_OverrideState: 1 + m_Value: 0 + intensity: + m_OverrideState: 1 + m_Value: 0.547 + response: + m_OverrideState: 1 + m_Value: 0 + texture: + m_OverrideState: 1 + m_Value: {fileID: 0} +--- !u!114 &2046802184354103511 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: fcaf02ee66ed11d4d9c67508e0130935, type: 3} + m_Name: GlobalDistortionVolume + m_EditorClassIdentifier: + active: 1 + intensity: + m_OverrideState: 1 + m_Value: 0 + noiseStrength: + m_OverrideState: 1 + m_Value: 1 + radialStrength: + m_OverrideState: 1 + m_Value: 2 + noiseScale: + m_OverrideState: 1 + m_Value: 14.5 + center: + m_OverrideState: 1 + m_Value: {x: -11.47, y: 0.5} + edgeFade: + m_OverrideState: 1 + m_Value: 3 + affectSceneView: + m_OverrideState: 1 + m_Value: 0 +--- !u!114 &2590790448571127267 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: c5e1dc532bcb41949b58bc4f2abfbb7e, type: 3} + m_Name: LensDistortion + m_EditorClassIdentifier: + active: 1 + intensity: + m_OverrideState: 0 + m_Value: 0 + xMultiplier: + m_OverrideState: 0 + m_Value: 0.532 + yMultiplier: + m_OverrideState: 0 + m_Value: 1 + center: + m_OverrideState: 0 + m_Value: {x: 0.5, y: 0.5} + scale: + m_OverrideState: 0 + m_Value: 0.98 +--- !u!114 &9136543105356401684 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 2b5b0fcb28cb9254bbcd2a498e0fe228, type: 3} + m_Name: GlobalAfterimageVolume + m_EditorClassIdentifier: + active: 1 + opacity: + m_OverrideState: 1 + m_Value: 0 + scale: + m_OverrideState: 1 + m_Value: 1.05 + affectSceneView: + m_OverrideState: 1 + m_Value: 0 diff --git a/Assets/Settings/Renderer2D.asset b/Assets/Settings/Renderer2D.asset index 2d777f2c..b1cb7f5d 100644 --- a/Assets/Settings/Renderer2D.asset +++ b/Assets/Settings/Renderer2D.asset @@ -1,5 +1,33 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7968524894476178354 +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: d71f5b59ebb9a7640b177e16adf3d6c7, type: 3} + m_Name: Global Distortion Renderer Feature + m_EditorClassIdentifier: + m_Active: 1 + renderPassEvent: 600 +--- !u!114 &-82031990492403773 +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: 84ae0996c2f9f6c43a0d5b735af7f121, type: 3} + m_Name: Global Glitch Renderer Feature + m_EditorClassIdentifier: + m_Active: 1 + renderPassEvent: 600 --- !u!114 &11400000 MonoBehaviour: m_ObjectHideFlags: 0 @@ -24,8 +52,12 @@ MonoBehaviour: probeSamplingDebugMesh: {fileID: 0} probeSamplingDebugTexture: {fileID: 0} probeVolumeBlendStatesCS: {fileID: 0} - m_RendererFeatures: [] - m_RendererFeatureMap: + m_RendererFeatures: + - {fileID: -7968524894476178354} + - {fileID: -82031990492403773} + - {fileID: 8810499459484542277} + - {fileID: 4089674193680255197} + m_RendererFeatureMap: 4eece3d8d31c6a91c3677bda5690dcfe45e55810942e457addc864d90271c138 m_UseNativeRenderPass: 0 m_LayerMask: serializedVersion: 2 @@ -56,3 +88,31 @@ MonoBehaviour: m_PostProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2} m_DefaultMaterialType: 0 m_DefaultCustomMaterial: {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} +--- !u!114 &4089674193680255197 +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: e30db065f184af241b78ce51edc50d96, type: 3} + m_Name: Global Monochrome Renderer Feature + m_EditorClassIdentifier: + m_Active: 1 + renderPassEvent: 600 +--- !u!114 &8810499459484542277 +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: a28c239b9c2736e489a75bd286167cb9, type: 3} + m_Name: Global Afterimage Renderer Feature + m_EditorClassIdentifier: + m_Active: 1 + renderPassEvent: 600 diff --git a/Assets/Shaders.meta b/Assets/Shaders.meta new file mode 100644 index 00000000..7adcfe60 --- /dev/null +++ b/Assets/Shaders.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4cfb6d280c0131d45b93db3841bd7acf +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Shaders/GlobalAfterimage.shader b/Assets/Shaders/GlobalAfterimage.shader new file mode 100644 index 00000000..9691d590 --- /dev/null +++ b/Assets/Shaders/GlobalAfterimage.shader @@ -0,0 +1,42 @@ +Shader "Hidden/Bansonic/GlobalAfterimage" +{ + SubShader + { + Tags { "RenderPipeline" = "UniversalPipeline" } + ZWrite Off + Cull Off + ZTest Always + + Pass + { + Name "GlobalAfterimage" + + HLSLPROGRAM + #pragma vertex Vert + #pragma fragment Frag + #pragma target 4.5 + + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + #include "Packages/com.unity.render-pipelines.core/Runtime/Utilities/Blit.hlsl" + + float _AfterimageOpacity; + float _AfterimageScale; + TEXTURE2D(_SnapshotTex); + SAMPLER(sampler_SnapshotTex); + + half4 Frag(Varyings input) : SV_Target + { + float2 uv = input.texcoord; + half4 baseColor = SAMPLE_TEXTURE2D_X(_BlitTexture, sampler_LinearClamp, uv); + + float safeScale = max(_AfterimageScale, 1.0); + float2 scaledUv = (uv - 0.5) / safeScale + 0.5; + float inside = step(0.0, scaledUv.x) * step(0.0, scaledUv.y) * step(scaledUv.x, 1.0) * step(scaledUv.y, 1.0); + half4 snapshot = SAMPLE_TEXTURE2D(_SnapshotTex, sampler_SnapshotTex, saturate(scaledUv)); + float alpha = saturate(_AfterimageOpacity) * inside; + return lerp(baseColor, snapshot, alpha); + } + ENDHLSL + } + } +} diff --git a/Assets/Shaders/GlobalAfterimage.shader.meta b/Assets/Shaders/GlobalAfterimage.shader.meta new file mode 100644 index 00000000..84b5ebdf --- /dev/null +++ b/Assets/Shaders/GlobalAfterimage.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 08e184084ff672d4f8e6b649d27dc10d +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Shaders/GlobalDistortion.shader b/Assets/Shaders/GlobalDistortion.shader new file mode 100644 index 00000000..fd573416 --- /dev/null +++ b/Assets/Shaders/GlobalDistortion.shader @@ -0,0 +1,52 @@ +Shader "Hidden/Bansonic/GlobalDistortion" +{ + SubShader + { + Tags { "RenderPipeline" = "UniversalPipeline" } + ZWrite Off + Cull Off + ZTest Always + + Pass + { + Name "GlobalDistortion" + + HLSLPROGRAM + #pragma vertex Vert + #pragma fragment Frag + #pragma target 4.5 + + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + #include "Packages/com.unity.render-pipelines.core/Runtime/Utilities/Blit.hlsl" + + float _DistortionIntensity; + float _NoiseStrength; + float _RadialStrength; + float _NoiseScale; + float2 _DistortionCenter; + float _EdgeFade; + + half4 Frag(Varyings input) : SV_Target + { + float2 uv = input.texcoord; + float2 centered = uv - _DistortionCenter; + float distanceFromCenter = length(centered); + float2 direction = distanceFromCenter > 0.0001 ? centered / distanceFromCenter : float2(0.0, 0.0); + float normalizedDistance = saturate(distanceFromCenter * 1.41421356); + float edgeMask = saturate(1.0 - pow(normalizedDistance, _EdgeFade)); + + float t = _Time.y; + float noiseA = sin((uv.x + t * 0.73) * _NoiseScale) * cos((uv.y - t * 1.13) * (_NoiseScale * 0.87)); + float noiseB = cos((uv.x * 1.31 - t * 0.41) * (_NoiseScale * 0.63)) * sin((uv.y * 1.11 + t * 0.52) * (_NoiseScale * 1.21)); + + float2 radialOffset = direction * edgeMask * (_RadialStrength * 0.03) * _DistortionIntensity; + float2 noiseOffset = float2(noiseA, noiseB) * (_NoiseStrength * 0.015) * _DistortionIntensity; + float2 sampleUv = uv + radialOffset + noiseOffset; + sampleUv = clamp(sampleUv, 0.0, 1.0); + + return SAMPLE_TEXTURE2D_X(_BlitTexture, sampler_LinearClamp, sampleUv); + } + ENDHLSL + } + } +} diff --git a/Assets/Shaders/GlobalDistortion.shader.meta b/Assets/Shaders/GlobalDistortion.shader.meta new file mode 100644 index 00000000..105c1f08 --- /dev/null +++ b/Assets/Shaders/GlobalDistortion.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: dc80b7dbbe782854c9f0c6ae053bfc70 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Shaders/GlobalGlitch.shader b/Assets/Shaders/GlobalGlitch.shader new file mode 100644 index 00000000..681ebaa3 --- /dev/null +++ b/Assets/Shaders/GlobalGlitch.shader @@ -0,0 +1,71 @@ +Shader "Hidden/Bansonic/GlobalGlitch" +{ + SubShader + { + Tags { "RenderPipeline" = "UniversalPipeline" } + ZWrite Off + Cull Off + ZTest Always + + Pass + { + Name "GlobalGlitch" + + HLSLPROGRAM + #pragma vertex Vert + #pragma fragment Frag + #pragma target 4.5 + + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + #include "Packages/com.unity.render-pipelines.core/Runtime/Utilities/Blit.hlsl" + + float _GlitchIntensity; + float _BlockStrength; + float _ColorSplit; + float _JitterAmount; + float _StripFrequency; + float _ScanlineStrength; + + float Hash(float2 p) + { + p = frac(p * float2(123.34, 345.45)); + p += dot(p, p + 34.345); + return frac(p.x * p.y); + } + + half4 Frag(Varyings input) : SV_Target + { + float2 uv = input.texcoord; + float timeSlice = floor(_Time.y * 24.0); + float stripIndex = floor(uv.y * _StripFrequency); + float stripNoise = Hash(float2(stripIndex, timeSlice)); + float blockMask = step(0.58, stripNoise); + + float blockShift = (stripNoise - 0.5) * _BlockStrength * 0.12 * _GlitchIntensity * blockMask; + float lineJitter = sin((uv.y + _Time.y * 14.0) * 420.0) * _JitterAmount * 0.003 * _GlitchIntensity; + float combinedShift = blockShift + lineJitter; + + float2 baseUv = uv; + baseUv.x = clamp(baseUv.x + combinedShift, 0.0, 1.0); + + float colorSplit = _ColorSplit * _GlitchIntensity; + float2 redUv = float2(clamp(baseUv.x + colorSplit, 0.0, 1.0), baseUv.y); + float2 greenUv = baseUv; + float2 blueUv = float2(clamp(baseUv.x - colorSplit, 0.0, 1.0), baseUv.y); + + half red = SAMPLE_TEXTURE2D_X(_BlitTexture, sampler_LinearClamp, redUv).r; + half green = SAMPLE_TEXTURE2D_X(_BlitTexture, sampler_LinearClamp, greenUv).g; + half blue = SAMPLE_TEXTURE2D_X(_BlitTexture, sampler_LinearClamp, blueUv).b; + + half4 color = half4(red, green, blue, 1.0); + + float scan = sin(uv.y * _ScreenParams.y * 1.15 + _Time.y * 12.0) * 0.5 + 0.5; + float scanMask = lerp(1.0, 1.0 - scan * 0.35, _ScanlineStrength * _GlitchIntensity); + color.rgb *= scanMask; + + return color; + } + ENDHLSL + } + } +} diff --git a/Assets/Shaders/GlobalGlitch.shader.meta b/Assets/Shaders/GlobalGlitch.shader.meta new file mode 100644 index 00000000..3d197d81 --- /dev/null +++ b/Assets/Shaders/GlobalGlitch.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 32a0932fed2df844c8796df10247873b +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Shaders/GlobalMonochrome.shader b/Assets/Shaders/GlobalMonochrome.shader new file mode 100644 index 00000000..788e03b5 --- /dev/null +++ b/Assets/Shaders/GlobalMonochrome.shader @@ -0,0 +1,36 @@ +Shader "Hidden/Bansonic/GlobalMonochrome" +{ + SubShader + { + Tags { "RenderPipeline" = "UniversalPipeline" } + ZWrite Off + Cull Off + ZTest Always + + Pass + { + Name "GlobalMonochrome" + + HLSLPROGRAM + #pragma vertex Vert + #pragma fragment Frag + #pragma target 4.5 + + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + #include "Packages/com.unity.render-pipelines.core/Runtime/Utilities/Blit.hlsl" + + float _MonochromeIntensity; + + half4 Frag(Varyings input) : SV_Target + { + float2 uv = input.texcoord; + half4 color = SAMPLE_TEXTURE2D_X(_BlitTexture, sampler_LinearClamp, uv); + half luminance = dot(color.rgb, half3(0.299h, 0.587h, 0.114h)); + half3 grayscale = luminance.xxx; + color.rgb = lerp(color.rgb, grayscale, saturate(_MonochromeIntensity)); + return color; + } + ENDHLSL + } + } +} diff --git a/Assets/Shaders/GlobalMonochrome.shader.meta b/Assets/Shaders/GlobalMonochrome.shader.meta new file mode 100644 index 00000000..e56ed8c6 --- /dev/null +++ b/Assets/Shaders/GlobalMonochrome.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: adee8c544438ff3498bececba27c3c76 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sphere.prefab b/Assets/Sphere.prefab index 8a2f230c..ef7a8849 100644 --- a/Assets/Sphere.prefab +++ b/Assets/Sphere.prefab @@ -29,8 +29,8 @@ Transform: serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.1, y: 6.49, z: 0.1} - m_ConstrainProportionsScale: 0 + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 1 m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/__so/songs_so_res/1002003_spectrum/CFD/CFD_3.json b/Assets/__so/songs_so_res/1002003_spectrum/CFD/CFD_3.json index dd1c4f2e..3fb4eff4 100644 --- a/Assets/__so/songs_so_res/1002003_spectrum/CFD/CFD_3.json +++ b/Assets/__so/songs_so_res/1002003_spectrum/CFD/CFD_3.json @@ -111,7 +111,7 @@ "length": 0.0, "barNumber": 3, "yPos": -268.5, - "noteFunction": "", + "noteFunction": "CameraWaveFX", "noteid": "7ae79d1c-43ff-4115-b804-486befebef2c", "newLocation": { "bar": 3, @@ -128,7 +128,7 @@ "length": 0.0, "barNumber": 5, "yPos": -268.5, - "noteFunction": "", + "noteFunction": "CameraScaleEvent", "noteid": "ca34a006-3d0a-46da-b853-900d9fd32929", "newLocation": { "bar": 5, @@ -145,7 +145,7 @@ "length": 0.0, "barNumber": 5, "yPos": 201.375, - "noteFunction": "", + "noteFunction": "CameraShakeEvent", "noteid": "1ed274b6-3065-46df-b8ba-229a8ca90d81", "newLocation": { "bar": 5, @@ -162,7 +162,7 @@ "length": 0.0, "barNumber": 7, "yPos": -268.5, - "noteFunction": "", + "noteFunction": "FlashBlinkEvent", "noteid": "a62ce93e-8977-4ef7-874e-d2aafa2e0b46", "newLocation": { "bar": 7, @@ -179,7 +179,7 @@ "length": 0.0, "barNumber": 7, "yPos": 201.375, - "noteFunction": "", + "noteFunction": "CameraGlitchFX", "noteid": "7ab2727f-3234-4823-9053-9d803186728d", "newLocation": { "bar": 7, @@ -196,7 +196,7 @@ "length": 0.6818181818181818, "barNumber": 9, "yPos": -268.5, - "noteFunction": "", + "noteFunction": "CameraGlitchFX", "noteid": "6ca6c017-f1a1-45ce-b222-38174fbacaed", "newLocation": { "bar": 9, @@ -213,7 +213,7 @@ "length": 0.6818181818181818, "barNumber": 10, "yPos": -268.5, - "noteFunction": "", + "noteFunction": "ScreenshotScale", "noteid": "f3b85cc8-4287-4180-b831-97eef996c938", "newLocation": { "bar": 10, @@ -230,7 +230,7 @@ "length": 0.0, "barNumber": 10, "yPos": 0.0, - "noteFunction": "", + "noteFunction": "CameraMonochromeFX", "noteid": "b4a846b0-e857-450e-99b9-a092c9f33be8", "newLocation": { "bar": 10, diff --git a/Assets/_eqpmtSys/EquipmentTierNameConfig.asset b/Assets/_eqpmtSys/EquipmentTierNameConfig.asset index 868c63ac..831247d4 100644 --- a/Assets/_eqpmtSys/EquipmentTierNameConfig.asset +++ b/Assets/_eqpmtSys/EquipmentTierNameConfig.asset @@ -1,4 +1,4 @@ -%YAML 1.1 +%YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!114 &11400000 MonoBehaviour: @@ -92,7 +92,7 @@ MonoBehaviour: - tierName: "\u6F84\u660E\u5883" equipmentSprite: {fileID: 21300000, guid: 814f39e3a1e204c4586f75b514a06601, type: 3} tierDescription: - - tierName: "\u5FC3\u517B\u5F52\u4E00" + - tierName: "\u5FC3\u517B\u5F52\u4E00\u5492" equipmentSprite: {fileID: 21300000, guid: 4ce68bd00ecc6f64baefd01ce27f33f9, type: 3} tierDescription: - tierName: "\u68A6\u9192\xB7\u65E0\u5C18\u771F\u5883" diff --git a/Assets/_eqpmtSys/equipSystems/chooseSkillPrefab.cs b/Assets/_eqpmtSys/equipSystems/chooseSkillPrefab.cs index 340e8118..4c7d78b6 100644 --- a/Assets/_eqpmtSys/equipSystems/chooseSkillPrefab.cs +++ b/Assets/_eqpmtSys/equipSystems/chooseSkillPrefab.cs @@ -139,19 +139,27 @@ public class chooseSkillPrefab : MonoBehaviour, IPointerEnterHandler, IPointerEx detailPinnedByButton = pinnedByButton; detailOpenedFrame = Time.frameCount; - Transform parent = transform.root != null ? transform.root : transform; + Transform parent = ResolveDetailParent(); spawnedDetail = Instantiate(sskilldetialPrefab, parent); + spawnedDetail.transform.SetAsLastSibling(); RectTransform selfRect = transform as RectTransform; RectTransform detailRect = spawnedDetail.transform as RectTransform; RectTransform parentRect = parent as RectTransform; if (selfRect != null && detailRect != null && parentRect != null) { + Canvas canvas = parent.GetComponentInParent(); + Camera eventCamera = null; + if (canvas != null && canvas.renderMode != RenderMode.ScreenSpaceOverlay) + { + eventCamera = canvas.worldCamera; + } + Vector3 worldPoint = selfRect.TransformPoint(new Vector3(selfRect.rect.xMax, selfRect.rect.center.y, 0f)); RectTransformUtility.ScreenPointToLocalPointInRectangle( parentRect, - RectTransformUtility.WorldToScreenPoint(null, worldPoint), - null, + RectTransformUtility.WorldToScreenPoint(eventCamera, worldPoint), + eventCamera, out Vector2 localPoint); detailRect.anchoredPosition = localPoint + detailPrefabOffset; } @@ -163,6 +171,22 @@ public class chooseSkillPrefab : MonoBehaviour, IPointerEnterHandler, IPointerEx } } + private Transform ResolveDetailParent() + { + Canvas canvas = GetComponentInParent(); + if (canvas != null && canvas.rootCanvas != null) + { + return canvas.rootCanvas.transform; + } + + if (transform.root != null) + { + return transform.root; + } + + return transform; + } + private bool IsPointerInside(Vector2 screenPoint) { if (IsScreenPointInside(transform as RectTransform, screenPoint)) diff --git a/Assets/_eqpmtSys/equipSystems/eSmelt/equipSmelt.cs b/Assets/_eqpmtSys/equipSystems/eSmelt/equipSmelt.cs index d2c6a2b9..8ade7df6 100644 --- a/Assets/_eqpmtSys/equipSystems/eSmelt/equipSmelt.cs +++ b/Assets/_eqpmtSys/equipSystems/eSmelt/equipSmelt.cs @@ -195,6 +195,11 @@ public class equipSmelt : MonoBehaviour SavePersistentState(); } + public void RefreshPlayerSkillAdjustedUi() + { + RefreshAllUi(); + } + public void SetDragPreviewVisible(bool visible) { if (dragObj == null) @@ -382,6 +387,7 @@ public class equipSmelt : MonoBehaviour return; } + int grantedFragments = Mathf.Max(0, pendingDirectFragmentsState); if (pendingDirectFragmentsState > 0) { PlayerEconomyLedger.EnsureInstance().AddMaterial(pendingDirectFragmentsState); @@ -398,6 +404,11 @@ public class equipSmelt : MonoBehaviour SavePersistentState(); RefreshAllSmeltPools(); RefreshAllEquipBags(); + + if (grantedFragments > 0) + { + gItemGet.display(gItemGet.Create("记忆碎片", ResolveMemoryFragmentSprite(), grantedFragments, ItemRarity.Uncommon)); + } } private void HandleGetRewardClicked() @@ -530,10 +541,30 @@ public class equipSmelt : MonoBehaviour ReinstateRewardEquipment(generated); storedSmeltEnergyState = Mathf.Max(0, storedSmeltEnergyState - requiredAmount); SavePersistentState(); + gItemGet.display(gItemGet.FromEquipment(generated, 1)); RefreshAllUi(); RefreshAllEquipBags(); } + private static Sprite ResolveMemoryFragmentSprite() + { + equipSmelt[] instances = FindObjectsByType(FindObjectsInactive.Include, FindObjectsSortMode.None); + if (instances == null) + { + return null; + } + + for (int i = 0; i < instances.Length; i++) + { + if (instances[i] != null && instances[i].memoryFragment != null) + { + return instances[i].memoryFragment; + } + } + + return null; + } + private void HandleRewardSelectorClosed() { activeCtasInstance = null; @@ -959,12 +990,14 @@ public class equipSmelt : MonoBehaviour private int GetQuickFinishCost() { - return ssrso != null ? Mathf.Max(0, ssrso.quickFinishCost) : 0; + int baseCost = ssrso != null ? Mathf.Max(0, ssrso.quickFinishCost) : 0; + return PlayerSkillService.ModifySmeltCoinCost(baseCost); } private int GetStartSmeltCost() { - return ssrso != null ? Mathf.Max(0, ssrso.startSmeltCost) : 0; + int baseCost = ssrso != null ? Mathf.Max(0, ssrso.startSmeltCost) : 0; + return PlayerSkillService.ModifySmeltCoinCost(baseCost); } private smeltStageRewardSO.SmeltStageRewardRequirement GetSelectedRewardRequirement() diff --git a/Assets/_eqpmtSys/equipmentRandomTestButton.cs b/Assets/_eqpmtSys/equipmentRandomTestButton.cs index 1f751afb..7eefe1a9 100644 --- a/Assets/_eqpmtSys/equipmentRandomTestButton.cs +++ b/Assets/_eqpmtSys/equipmentRandomTestButton.cs @@ -120,6 +120,10 @@ public class equipmentRandomTestButton : MonoBehaviour GenerateSpecialEffects(generated); GenerateIllusionEffects(generated); lastGeneratedEquipment = PersistGeneratedEquipment(generated); + if (lastGeneratedEquipment != null) + { + gItemGet.display(gItemGet.FromEquipment(lastGeneratedEquipment, 1)); + } BuildSummary(generated); RefreshEquipmentList(); MarkHostDirty(); diff --git a/Assets/_eqpmtSys/esDesPrefab.cs b/Assets/_eqpmtSys/esDesPrefab.cs index e585e3fe..ad734362 100644 --- a/Assets/_eqpmtSys/esDesPrefab.cs +++ b/Assets/_eqpmtSys/esDesPrefab.cs @@ -41,4 +41,25 @@ public class esDesPrefab : MonoBehaviour skill_story.gameObject.SetActive(!string.IsNullOrWhiteSpace(storyText)); } } + + public void Bind(string displayName, Sprite icon, string description, string story) + { + if (skillProfile != null) + { + skillProfile.sprite = icon; + skillProfile.enabled = icon != null; + } + + if (skillName != null) + skillName.text = displayName ?? string.Empty; + + if (skillDescription != null) + skillDescription.text = description ?? string.Empty; + + if (skill_story != null) + { + skill_story.text = story ?? string.Empty; + skill_story.gameObject.SetActive(!string.IsNullOrWhiteSpace(skill_story.text)); + } + } } diff --git a/Assets/_eqpmtSys/esDesPrefab.prefab b/Assets/_eqpmtSys/esDesPrefab.prefab index 1d220055..87ea47af 100644 --- a/Assets/_eqpmtSys/esDesPrefab.prefab +++ b/Assets/_eqpmtSys/esDesPrefab.prefab @@ -35,7 +35,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 124.06795, y: -57} + m_AnchoredPosition: {x: 124.06795, y: -80} m_SizeDelta: {x: 208.1359, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &2049021961984502307 @@ -68,7 +68,7 @@ MonoBehaviour: m_Calls: [] m_FontData: m_Font: {fileID: 12800000, guid: bd4be44636ad6c24a9b117a7108a75e9, type: 3} - m_FontSize: 10 + m_FontSize: 14 m_FontStyle: 0 m_BestFit: 0 m_MinSize: 1 @@ -211,7 +211,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0.88235295} + m_Color: {r: 0, g: 0, b: 0, a: 0.9411765} m_RaycastTarget: 0 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 0 @@ -244,7 +244,7 @@ MonoBehaviour: m_Left: 20 m_Right: 0 m_Top: 57 - m_Bottom: 10 + m_Bottom: 16 m_ChildAlignment: 0 m_Spacing: 0 m_ChildForceExpandWidth: 1 @@ -379,7 +379,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 124.06795, y: -57} + m_AnchoredPosition: {x: 124.06795, y: -93} m_SizeDelta: {x: 208.1359, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &2792857840598114499 @@ -473,7 +473,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 124.06795, y: -57} + m_AnchoredPosition: {x: 124.06795, y: -65} m_SizeDelta: {x: 208.1359, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &1487207466561665800 diff --git a/Assets/_globalNotices/BansonicItemGet.cs b/Assets/_globalNotices/BansonicItemGet.cs new file mode 100644 index 00000000..00b6bc0b --- /dev/null +++ b/Assets/_globalNotices/BansonicItemGet.cs @@ -0,0 +1,253 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace Bansonic +{ + public static class gItemGet + { + private const string PrefabResourcePath = "itemGet"; + private static readonly Color FallbackColor = Color.white; + + private static GameObject currentInstance; + private static itemGetPrefab currentController; + private static ItemRarityColorConfigSO cachedRarityConfig; + + public struct ItemEntry + { + public Sprite icon; + public string displayName; + public int amount; + public ItemRarity rarity; + public bool useCustomColor; + public Color customColor; + } + + public static void display(params ItemEntry[] items) + { + display((IEnumerable)items); + } + + public static void display(IEnumerable items) + { + EnsureInstance(); + if (currentController == null) + { + Debug.LogWarning("[gItemGet] itemGet prefab missing itemGetPrefab component."); + return; + } + + currentController.ClearItems(); + + if (items == null) + { + return; + } + + foreach (ItemEntry entry in items) + { + get_item_prefab item = currentController.AddItem(); + if (item == null) + { + continue; + } + + Color qualityColor = entry.useCustomColor + ? entry.customColor + : ResolveRarityColor(entry.rarity); + + item.Bind(entry.icon, entry.displayName, entry.amount, qualityColor); + } + } + + public static ItemEntry Create(string displayName, Sprite icon, int amount = 1, ItemRarity rarity = ItemRarity.None) + { + return new ItemEntry + { + displayName = displayName, + icon = icon, + amount = Mathf.Max(1, amount), + rarity = rarity, + useCustomColor = false, + customColor = default + }; + } + + public static ItemEntry Create(string displayName, Sprite icon, int amount, Color qualityColor) + { + return new ItemEntry + { + displayName = displayName, + icon = icon, + amount = Mathf.Max(1, amount), + rarity = ItemRarity.None, + useCustomColor = true, + customColor = qualityColor + }; + } + + public static ItemEntry FromStoreItem(storeItemSO item, int amount = 1) + { + if (item == null) + { + return Create("未知物品", null, amount, ItemRarity.None); + } + + return Create(item.itemName, item.itemIcon, amount, item.itemRarity); + } + + public static ItemEntry FromExpBottle(expBottlesSO item, int amount = 1) + { + if (item == null) + { + return Create("未知经验瓶", null, amount, ItemRarity.None); + } + + return Create(item.expBottleName, item.expBottleSprite, amount, item.itemRarity); + } + + public static ItemEntry FromGrowthMaterial(growthMaterialSO item, int amount = 1) + { + if (item == null) + { + return Create("未知培养材料", null, amount, ItemRarity.None); + } + + return Create(item.growthMaterialName, item.growthMaterialSprite, amount, item.itemRarity); + } + + public static ItemEntry FromEquipmentConsumable(equipmentConsumableSO item, int amount = 1) + { + if (item == null) + { + return Create("未知装备材料", null, amount, ItemRarity.None); + } + + return Create(item.consumableName, item.consumableSprite, amount, item.itemRarity); + } + + public static ItemEntry FromEquipment(equipmentSO equipment, int amount = 1) + { + if (equipment == null) + { + return Create("未知记忆", null, amount, ItemRarity.None); + } + + return Create( + equipment.GetDisplayTierName(), + equipment.GetCurrentEquipmentSprite(), + amount, + ResolveEquipmentColor(equipment)); + } + + private static void EnsureInstance() + { + if (currentInstance != null && currentController != null) + { + if (!currentInstance.activeInHierarchy) + { + currentInstance.SetActive(true); + } + + return; + } + + GameObject prefab = Resources.Load(PrefabResourcePath); + if (prefab == null) + { + Debug.LogWarning("[gItemGet] Failed to load Resources/itemGet.prefab"); + return; + } + + Transform parent = ResolveParent(); + currentInstance = parent != null + ? Object.Instantiate(prefab, parent, false) + : Object.Instantiate(prefab); + + currentInstance.name = prefab.name; + currentController = currentInstance.GetComponent(); + } + + private static Transform ResolveParent() + { + Canvas[] canvases = Object.FindObjectsByType(FindObjectsInactive.Exclude, FindObjectsSortMode.None); + Canvas best = null; + + for (int i = 0; i < canvases.Length; i++) + { + Canvas canvas = canvases[i]; + if (canvas == null || !canvas.gameObject.activeInHierarchy || !canvas.isRootCanvas) + { + continue; + } + + if (best == null || canvas.sortingOrder >= best.sortingOrder) + { + best = canvas; + } + } + + return best != null ? best.transform : null; + } + + private static Color ResolveRarityColor(ItemRarity rarity) + { + if (cachedRarityConfig == null) + { +#if UNITY_EDITOR + cachedRarityConfig = UnityEditor.AssetDatabase.LoadAssetAtPath( + "Assets/playerBagSystem/ItemRarityColorConfig.asset"); +#endif + } + + if (cachedRarityConfig != null) + { + return cachedRarityConfig.GetColor(rarity, FallbackColor); + } + + switch (rarity) + { + case ItemRarity.Common: + return new Color32(95, 155, 107, 255); + case ItemRarity.Uncommon: + return new Color32(74, 134, 184, 255); + case ItemRarity.Rare: + return new Color32(106, 76, 156, 255); + case ItemRarity.Epic: + return new Color32(184, 134, 69, 255); + case ItemRarity.Legendary: + return new Color32(184, 76, 76, 255); + case ItemRarity.Mythic: + return new Color32(217, 108, 158, 255); + case ItemRarity.Supreme: + return new Color32(255, 103, 164, 255); + default: + return FallbackColor; + } + } + + private static Color ResolveEquipmentColor(equipmentSO equipment) + { + if (equipment == null) + { + return FallbackColor; + } + + int index = equipment.GetVisualQualityColorIndex(); + switch (index) + { + case 1: + return new Color32(95, 155, 107, 255); + case 2: + return new Color32(74, 134, 184, 255); + case 3: + return new Color32(106, 76, 156, 255); + case 4: + return new Color32(184, 134, 69, 255); + case 5: + return new Color32(184, 76, 76, 255); + default: + return new Color32(255, 103, 164, 255); + } + } + } +} diff --git a/Assets/_globalNotices/BansonicItemGet.cs.meta b/Assets/_globalNotices/BansonicItemGet.cs.meta new file mode 100644 index 00000000..448e6b82 --- /dev/null +++ b/Assets/_globalNotices/BansonicItemGet.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 82dd3d62659b6a64e88a02d137a400ac \ No newline at end of file diff --git a/Assets/itemGet.meta b/Assets/itemGet.meta new file mode 100644 index 00000000..802f82df --- /dev/null +++ b/Assets/itemGet.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f1ebfa8f32810ce4ea4f2576d8dadf66 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/itemGet/get_item_prefab.cs b/Assets/itemGet/get_item_prefab.cs new file mode 100644 index 00000000..274c1920 --- /dev/null +++ b/Assets/itemGet/get_item_prefab.cs @@ -0,0 +1,43 @@ +using UnityEngine; +using UnityEngine.UI; +using TMPro; + +public class get_item_prefab : MonoBehaviour +{ + public Image item_btm; + public Image itemProfile; + public TextMeshProUGUI itemAmount; + public Text itemName; + + public void Bind(Sprite icon, string displayName, int amount, Color qualityColor) + { + if (item_btm != null) + { + item_btm.color = qualityColor; + } + + if (itemProfile != null) + { + itemProfile.sprite = icon; + itemProfile.enabled = icon != null; + itemProfile.color = icon != null ? Color.white : new Color(1f, 1f, 1f, 0f); + } + + if (itemName != null) + { + itemName.text = displayName ?? string.Empty; + } + + if (itemAmount != null) + { + if (amount <= 1) + { + itemAmount.text = string.Empty; + } + else + { + itemAmount.text = amount.ToString(); + } + } + } +} diff --git a/Assets/itemGet/get_item_prefab.cs.meta b/Assets/itemGet/get_item_prefab.cs.meta new file mode 100644 index 00000000..a34449ef --- /dev/null +++ b/Assets/itemGet/get_item_prefab.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: e7f5efecd257f70488d56bf0a767230c \ No newline at end of file diff --git a/Assets/itemGet/get_item_prefab.prefab b/Assets/itemGet/get_item_prefab.prefab new file mode 100644 index 00000000..8cf4eb1c --- /dev/null +++ b/Assets/itemGet/get_item_prefab.prefab @@ -0,0 +1,423 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &18974122146848510 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3319628771906024608} + - component: {fileID: 4359877026299959118} + - component: {fileID: 7767232844961157683} + m_Layer: 5 + m_Name: btmQuality + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3319628771906024608 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 18974122146848510} + 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: 4325416963031440304} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 130, y: 130} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4359877026299959118 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 18974122146848510} + m_CullTransparentMesh: 1 +--- !u!114 &7767232844961157683 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 18974122146848510} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &339661534610086690 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 518968684966382619} + - component: {fileID: 4988922451899572295} + - component: {fileID: 514154942639368217} + m_Layer: 5 + m_Name: itemProfile + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &518968684966382619 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 339661534610086690} + 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: 4325416963031440304} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 120, y: 120} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4988922451899572295 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 339661534610086690} + m_CullTransparentMesh: 1 +--- !u!114 &514154942639368217 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 339661534610086690} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 1a62adf36834dd04181a6dd61344f8b8, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &913995668709144583 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4325416963031440304} + - component: {fileID: 7456664981039242979} + m_Layer: 5 + m_Name: get_item_prefab + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4325416963031440304 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 913995668709144583} + 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: + - {fileID: 3319628771906024608} + - {fileID: 518968684966382619} + - {fileID: 2293333086341986953} + - {fileID: 6074961186985790639} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 130, y: 130} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &7456664981039242979 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 913995668709144583} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e7f5efecd257f70488d56bf0a767230c, type: 3} + m_Name: + m_EditorClassIdentifier: + item_btm: {fileID: 7767232844961157683} + itemProfile: {fileID: 514154942639368217} + itemAmount: {fileID: 508704441844867492} + itemName: {fileID: 2482204293705619698} +--- !u!1 &2281945804967682548 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2293333086341986953} + - component: {fileID: 6679092906817300735} + - component: {fileID: 508704441844867492} + m_Layer: 5 + m_Name: amt + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2293333086341986953 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2281945804967682548} + 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: 4325416963031440304} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -17.9, y: -40} + m_SizeDelta: {x: 148.671, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6679092906817300735 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2281945804967682548} + m_CullTransparentMesh: 1 +--- !u!114 &508704441844867492 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2281945804967682548} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 2147483647 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 452fa97492cae71479cf143f29930751, type: 2} + m_sharedMaterial: {fileID: -346136068272202111, guid: 452fa97492cae71479cf143f29930751, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 24 + m_fontSizeBase: 24 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 4 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &4937134612620184442 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6074961186985790639} + - component: {fileID: 3728309417902643327} + - component: {fileID: 2482204293705619698} + m_Layer: 5 + m_Name: name + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6074961186985790639 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4937134612620184442} + 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: 4325416963031440304} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -86.05} + m_SizeDelta: {x: 140, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3728309417902643327 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4937134612620184442} + m_CullTransparentMesh: 1 +--- !u!114 &2482204293705619698 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4937134612620184442} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: dfa10de3e2846524089b5073175cd151, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 20 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u4ED9\u54C1\u5076\u50CF\u590D\u6F14\u5355\u5143" diff --git a/Assets/itemGet/get_item_prefab.prefab.meta b/Assets/itemGet/get_item_prefab.prefab.meta new file mode 100644 index 00000000..7820b9ab --- /dev/null +++ b/Assets/itemGet/get_item_prefab.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: acdf60e42009ece499bb3c9187c7a120 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/itemGet/itemGetPrefab.cs b/Assets/itemGet/itemGetPrefab.cs new file mode 100644 index 00000000..11039011 --- /dev/null +++ b/Assets/itemGet/itemGetPrefab.cs @@ -0,0 +1,70 @@ +using UnityEngine; +using UnityEngine.UI; +using System.Collections.Generic; + +public class itemGetPrefab : MonoBehaviour +{ + [Header("item prefab")] + public GameObject itemPrefab; + public Transform displayParent; + + [Header("btn")] + public Button close; + + private readonly List spawnedItems = new List(); + + private void Awake() + { + if (close != null) + { + close.onClick.RemoveListener(CloseSelf); + close.onClick.AddListener(CloseSelf); + } + } + + private void OnDestroy() + { + if (close != null) + { + close.onClick.RemoveListener(CloseSelf); + } + } + + public void ClearItems() + { + for (int i = 0; i < spawnedItems.Count; i++) + { + if (spawnedItems[i] != null) + { + Destroy(spawnedItems[i]); + } + } + + spawnedItems.Clear(); + + if (displayParent != null) + { + for (int i = displayParent.childCount - 1; i >= 0; i--) + { + Destroy(displayParent.GetChild(i).gameObject); + } + } + } + + public get_item_prefab AddItem() + { + if (itemPrefab == null || displayParent == null) + { + return null; + } + + GameObject instance = Instantiate(itemPrefab, displayParent); + spawnedItems.Add(instance); + return instance.GetComponent(); + } + + public void CloseSelf() + { + Destroy(gameObject); + } +} diff --git a/Assets/itemGet/itemGetPrefab.cs.meta b/Assets/itemGet/itemGetPrefab.cs.meta new file mode 100644 index 00000000..0ba42697 --- /dev/null +++ b/Assets/itemGet/itemGetPrefab.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 39b86a94e0f9b43418207c0c1a25c044 \ No newline at end of file diff --git a/Assets/playerBagSystem/UI_userBag.prefab b/Assets/playerBagSystem/UI_userBag.prefab index c995b984..a7dfd680 100644 --- a/Assets/playerBagSystem/UI_userBag.prefab +++ b/Assets/playerBagSystem/UI_userBag.prefab @@ -3043,7 +3043,7 @@ MonoBehaviour: m_PressedTrigger: Pressed m_SelectedTrigger: Selected m_DisabledTrigger: Disabled - m_Interactable: 1 + m_Interactable: 0 m_TargetGraphic: {fileID: 4599931531580898861} m_OnClick: m_PersistentCalls: @@ -5868,7 +5868,7 @@ MonoBehaviour: m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: "\u8FD8\u5DEE2\u573A\u6BD4\u8D5B\u53EF\u63D0\u53D6\u5956\u52B1/\u878D\u5408\u5B8C\u6BD5\uFF0C\u53EF\u9886\u53D6\u5956\u52B1" + m_Text: --- !u!1 &1496425020052927388 GameObject: m_ObjectHideFlags: 0 @@ -8141,7 +8141,7 @@ MonoBehaviour: m_PressedTrigger: Pressed m_SelectedTrigger: Selected m_DisabledTrigger: Disabled - m_Interactable: 1 + m_Interactable: 0 m_TargetGraphic: {fileID: 8317396197396341973} m_OnClick: m_PersistentCalls: @@ -10526,7 +10526,7 @@ MonoBehaviour: m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 2000 / 2000 + m_Text: 0/3000 --- !u!1 &3049892735558273088 GameObject: m_ObjectHideFlags: 0 @@ -10857,7 +10857,7 @@ MonoBehaviour: m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 2 + m_Text: 0 --- !u!1 &3213626675873551214 GameObject: m_ObjectHideFlags: 0 @@ -11214,7 +11214,7 @@ MonoBehaviour: m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: "\u878D\u5408\u8FDB\u5EA6" + m_Text: "\u878D\u5408\u8FDB\u5EA60/1" --- !u!1 &3313849891983255375 GameObject: m_ObjectHideFlags: 0 @@ -13152,7 +13152,7 @@ MonoBehaviour: m_PreserveAspect: 0 m_FillCenter: 1 m_FillMethod: 4 - m_FillAmount: 0.5 + m_FillAmount: 0 m_FillClockwise: 1 m_FillOrigin: 0 m_UseSpriteMesh: 0 @@ -13310,7 +13310,7 @@ MonoBehaviour: m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: reason.why + m_Text: "\u9700\u8981\u6295\u5165\u8BB0\u5FC6" --- !u!1 &3966248874610226284 GameObject: m_ObjectHideFlags: 0 @@ -15311,7 +15311,7 @@ MonoBehaviour: m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: Option A + m_Text: "40 \u968F\u673A\u8BB0\u5FC6" --- !u!1 &4635021010433457706 GameObject: m_ObjectHideFlags: 0 @@ -16644,7 +16644,7 @@ MonoBehaviour: m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: "1000\u7B97\u529B\u5FEB\u901F\u5B8C\u6210" + m_Text: 0 --- !u!1 &5018197546540534172 GameObject: m_ObjectHideFlags: 0 @@ -19386,11 +19386,17 @@ MonoBehaviour: m_Value: 0 m_Options: m_Options: - - m_Text: Option A + - m_Text: "40 \u968F\u673A\u8BB0\u5FC6" m_Image: {fileID: 0} - - m_Text: Option B + - m_Text: "60 \u81EA\u9009\u8BB0\u5FC6" m_Image: {fileID: 0} - - m_Text: Option C + - m_Text: "200 \u81EA\u9009\u9AD8\u5929\u8D4B\u8BB0\u5FC6" + m_Image: {fileID: 0} + - m_Text: "500 \u81EA\u9009\u73CD\u85CF\u8BB0\u5FC6" + m_Image: {fileID: 0} + - m_Text: "1000 \u81EA\u9009\u81F3\u81FB\u8BB0\u5FC6" + m_Image: {fileID: 0} + - m_Text: "1500 \u81EA\u9009\u523B\u9AA8\u94ED\u5FC3\u8BB0\u5FC6" m_Image: {fileID: 0} m_OnValueChanged: m_PersistentCalls: @@ -24893,7 +24899,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &8851354205082234328 RectTransform: m_ObjectHideFlags: 0 @@ -25110,7 +25116,7 @@ MonoBehaviour: m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 2048 + m_Text: 0 --- !u!1 &8192863506754736897 GameObject: m_ObjectHideFlags: 0 @@ -25493,7 +25499,7 @@ MonoBehaviour: m_PressedTrigger: Pressed m_SelectedTrigger: Selected m_DisabledTrigger: Disabled - m_Interactable: 1 + m_Interactable: 0 m_TargetGraphic: {fileID: 4344585137749710138} m_OnClick: m_PersistentCalls: @@ -26969,7 +26975,7 @@ MonoBehaviour: m_MinValue: 0 m_MaxValue: 1 m_WholeNumbers: 0 - m_Value: 0.5 + m_Value: 0 m_OnValueChanged: m_PersistentCalls: m_Calls: [] @@ -28050,7 +28056,7 @@ MonoBehaviour: m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 2048 + m_Text: 0 --- !u!1 &9107132343803959900 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/playerInfoDisplay/UI_Player.prefab b/Assets/playerInfoDisplay/UI_Player.prefab index 0c073766..22dbb4ad 100644 --- a/Assets/playerInfoDisplay/UI_Player.prefab +++ b/Assets/playerInfoDisplay/UI_Player.prefab @@ -229,6 +229,85 @@ MonoBehaviour: m_VerticalOverflow: 0 m_LineSpacing: 1 m_Text: "\u8868\u73B0" +--- !u!1 &181167420855266430 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2103071683812037302} + - component: {fileID: 6144815321703191152} + - component: {fileID: 2149662359065615016} + m_Layer: 5 + m_Name: skillIconBtm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2103071683812037302 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 181167420855266430} + 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: + - {fileID: 8358609045650433087} + - {fileID: 2937041997228588268} + - {fileID: 5485375274710847023} + - {fileID: 8230633927632511062} + m_Father: {fileID: 1897121867755047412} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 75, y: 75} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6144815321703191152 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 181167420855266430} + m_CullTransparentMesh: 1 +--- !u!114 &2149662359065615016 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 181167420855266430} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.6179246, b: 0.8716234, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!1 &386430536236035290 GameObject: m_ObjectHideFlags: 0 @@ -386,6 +465,86 @@ MonoBehaviour: m_VerticalOverflow: 0 m_LineSpacing: 1 m_Text: "\u8FD1\u671F\u6570\u636E\u6982\u89C8" +--- !u!1 &966331471395766531 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2488879254647485799} + - component: {fileID: 1440102085504455954} + - component: {fileID: 1045913749643688121} + m_Layer: 5 + m_Name: need + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2488879254647485799 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 966331471395766531} + 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: + - {fileID: 7499461716450536788} + m_Father: {fileID: 5231010977334089563} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -99.035, y: -171.47} + m_SizeDelta: {x: 57.931, y: 17.451} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1440102085504455954 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 966331471395766531} + m_CullTransparentMesh: 1 +--- !u!114 &1045913749643688121 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 966331471395766531} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: dfa10de3e2846524089b5073175cd151, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u9700\u8981\u6D88\u8017" --- !u!1 &973733457592182024 GameObject: m_ObjectHideFlags: 0 @@ -516,6 +675,7 @@ MonoBehaviour: radarChartController: {fileID: 7437954056658742430} chartBridge: {fileID: 7894015890856802152} rankConfig: {fileID: 11400000, guid: 951debb97a9b89f48885c82bb601533a, type: 2} + hideWhenOverlayVisible: 0 reloadOnEnable: 1 maxInitAttempts: 20 retryDelaySeconds: 0.15 @@ -529,6 +689,81 @@ MonoBehaviour: topSampleCount: 10 performanceConfidenceFullCount: 20 normalizedSpreadPenalty: 0.3 +--- !u!1 &1433317237205209732 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4214572622581633858} + - component: {fileID: 4869922081800999184} + - component: {fileID: 748028211679366972} + m_Layer: 5 + m_Name: Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4214572622581633858 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1433317237205209732} + 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: 7023287984592648684} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: -10, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4869922081800999184 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1433317237205209732} + m_CullTransparentMesh: 1 +--- !u!114 &748028211679366972 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1433317237205209732} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 7919194353434859991, guid: b35fcaa46fa9f3e49b71c103f69df698, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 4 --- !u!1 &1466334736058783776 GameObject: m_ObjectHideFlags: 0 @@ -920,6 +1155,121 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1619077222236675354 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3527716783478569440} + - component: {fileID: 410914486962449965} + - component: {fileID: 7758320234434973897} + m_Layer: 5 + m_Name: Text (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3527716783478569440 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1619077222236675354} + 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: 3514268750863439136} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &410914486962449965 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1619077222236675354} + m_CullTransparentMesh: 1 +--- !u!114 &7758320234434973897 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1619077222236675354} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: dfa10de3e2846524089b5073175cd151, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u5207\u6362" +--- !u!1 &1720752582806640742 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7700247477075624768} + m_Layer: 5 + m_Name: Handle Slide Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7700247477075624768 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1720752582806640742} + 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: + - {fileID: 2921030353387055411} + m_Father: {fileID: 4261690897775698385} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -15, y: 0} + m_SizeDelta: {x: -9.999996, y: 0} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &1748131000723417000 GameObject: m_ObjectHideFlags: 0 @@ -1311,6 +1661,85 @@ MonoBehaviour: m_OnClick: m_PersistentCalls: m_Calls: [] +--- !u!1 &1926100184772572502 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2000924201602755833} + - component: {fileID: 1079642186633148437} + - component: {fileID: 332714026111076778} + m_Layer: 5 + m_Name: needHowMuch + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2000924201602755833 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1926100184772572502} + 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: 4261690897775698385} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -15.676, y: 0.0000076293945} + m_SizeDelta: {x: 249.709, y: 15} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1079642186633148437 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1926100184772572502} + m_CullTransparentMesh: 1 +--- !u!114 &332714026111076778 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1926100184772572502} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 0f48904603cd9d74a8012b17a278cecc, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u8FD8\u9700\u89813\u573A\u6BD4\u8D5B" --- !u!1 &2007602109900949158 GameObject: m_ObjectHideFlags: 0 @@ -1390,6 +1819,81 @@ MonoBehaviour: m_VerticalOverflow: 0 m_LineSpacing: 1 m_Text: "\u8BC4\u7EA7" +--- !u!1 &2135470366424882662 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7383026274984665155} + - component: {fileID: 4560823902546782414} + - component: {fileID: 1904673253712739597} + m_Layer: 5 + m_Name: bbtm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7383026274984665155 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2135470366424882662} + 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: 6564398317966452634} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -202.176} + m_SizeDelta: {x: 1920, y: 1080} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4560823902546782414 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2135470366424882662} + m_CullTransparentMesh: 1 +--- !u!114 &1904673253712739597 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2135470366424882662} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!1 &2139543971626346939 GameObject: m_ObjectHideFlags: 0 @@ -1954,11 +2458,132 @@ MonoBehaviour: m_HandleRect: {fileID: 108610351342877671} m_Direction: 2 m_Value: 1 - m_Size: 0.57224333 + m_Size: 0.5722434 m_NumberOfSteps: 0 m_OnValueChanged: m_PersistentCalls: m_Calls: [] +--- !u!1 &2618562364703312358 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5988154149403173270} + - component: {fileID: 8879601071554993816} + - component: {fileID: 7151145785823468884} + - component: {fileID: 247695210710589904} + m_Layer: 5 + m_Name: noCancel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5988154149403173270 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2618562364703312358} + 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: + - {fileID: 6621757540638538027} + m_Father: {fileID: 5231010977334089563} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 83.095, y: -195.2} + m_SizeDelta: {x: 98.511, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8879601071554993816 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2618562364703312358} + m_CullTransparentMesh: 1 +--- !u!114 &7151145785823468884 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2618562364703312358} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.71258354, b: 0.63529414, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 7f3b1220317607e44bbb8f0e1998044a, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 3 +--- !u!114 &247695210710589904 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2618562364703312358} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 7151145785823468884} + m_OnClick: + m_PersistentCalls: + m_Calls: [] --- !u!1 &2814785777674154996 GameObject: m_ObjectHideFlags: 0 @@ -2574,10 +3199,11 @@ RectTransform: m_Children: - {fileID: 5705310861349071005} - {fileID: 4120547599697314623} - - {fileID: 3451445245364255000} - {fileID: 1663019172486836621} - {fileID: 785066961278625254} + - {fileID: 3451445245364255000} - {fileID: 2760358654686141492} + - {fileID: 7899058211053113832} - {fileID: 4460567748034842732} - {fileID: 1350570700574439255} m_Father: {fileID: 3033406375213441124} @@ -2912,6 +3538,164 @@ MonoBehaviour: m_VerticalOverflow: 0 m_LineSpacing: 1 m_Text: "\u67E5\u770B\u7B49\u7EA7\u8BE6\u60C5" +--- !u!1 &3717149589856758612 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2039448843946965226} + - component: {fileID: 1566475586994706647} + - component: {fileID: 4649412405969005153} + m_Layer: 5 + m_Name: Text (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2039448843946965226 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3717149589856758612} + 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: 221816933674858199} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1566475586994706647 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3717149589856758612} + m_CullTransparentMesh: 1 +--- !u!114 &4649412405969005153 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3717149589856758612} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: bd4be44636ad6c24a9b117a7108a75e9, type: 3} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u5173\u95ED\u7B49\u7EA7\u7279\u6280\u8BBE\u7F6E" +--- !u!1 &3751196042077039686 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5485375274710847023} + - component: {fileID: 2878705972747618096} + - component: {fileID: 3853808377813099131} + m_Layer: 5 + m_Name: skillName + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5485375274710847023 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3751196042077039686} + 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: 2103071683812037302} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 131, y: 22.5} + m_SizeDelta: {x: 172.624, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2878705972747618096 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3751196042077039686} + m_CullTransparentMesh: 1 +--- !u!114 &3853808377813099131 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3751196042077039686} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: dfa10de3e2846524089b5073175cd151, type: 3} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u6280\u80FD\u540D\u5B57\u6700\u591A\u4E5D\u4E2A\u5B57" --- !u!1 &3761757374374160689 GameObject: m_ObjectHideFlags: 0 @@ -2948,6 +3732,42 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: -20, y: -20} m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &3806801545278731314 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7023287984592648684} + m_Layer: 5 + m_Name: Fill Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7023287984592648684 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3806801545278731314} + 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: + - {fileID: 4214572622581633858} + m_Father: {fileID: 4261690897775698385} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: -5, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &3917494060144924217 GameObject: m_ObjectHideFlags: 0 @@ -3639,6 +4459,117 @@ MonoBehaviour: m_VerticalOverflow: 0 m_LineSpacing: 1 m_Text: "\u603B\u5206" +--- !u!1 &4690364241484144738 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5954402279828222002} + m_Layer: 5 + m_Name: progress + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5954402279828222002 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4690364241484144738} + 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: + - {fileID: 4261690897775698385} + m_Father: {fileID: 5231010977334089563} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4697064735837044207 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2455925084605273242} + - component: {fileID: 995679829488955927} + - component: {fileID: 1854780981945531472} + m_Layer: 5 + m_Name: btms + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2455925084605273242 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4697064735837044207} + 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: 6564398317966452634} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -257.7442} + m_SizeDelta: {x: 700, y: 622.456} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &995679829488955927 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4697064735837044207} + m_CullTransparentMesh: 1 +--- !u!114 &1854780981945531472 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4697064735837044207} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 7f3b1220317607e44bbb8f0e1998044a, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!1 &4803949268868169352 GameObject: m_ObjectHideFlags: 0 @@ -3729,6 +4660,43 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_ShowMaskGraphic: 0 +--- !u!1 &4813461242036232361 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1897121867755047412} + m_Layer: 5 + m_Name: currentSkill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1897121867755047412 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4813461242036232361} + 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: + - {fileID: 2103071683812037302} + - {fileID: 5231010977334089563} + m_Father: {fileID: 6564398317966452634} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 50, y: -88.4} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &4881858099498406784 GameObject: m_ObjectHideFlags: 0 @@ -4329,6 +5297,42 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 +--- !u!1 &5245283774456000308 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7899058211053113832} + m_Layer: 5 + m_Name: uLevelSkillsParent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7899058211053113832 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5245283774456000308} + 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: + - {fileID: 6564398317966452634} + m_Father: {fileID: 2656598926787525001} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 11, y: 170.95001} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &5261731462418036415 GameObject: m_ObjectHideFlags: 0 @@ -5527,6 +6531,127 @@ MonoBehaviour: m_VerticalOverflow: 0 m_LineSpacing: 1 m_Text: "\u65E5\u671F" +--- !u!1 &6156877289016827338 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 221816933674858199} + - component: {fileID: 2956925575926562307} + - component: {fileID: 3964108092199121655} + - component: {fileID: 9173407196745132658} + m_Layer: 5 + m_Name: close + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &221816933674858199 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6156877289016827338} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.0000306, y: 1.0000306, z: 1.0000306} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2039448843946965226} + m_Father: {fileID: 6564398317966452634} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 224.4, y: 15} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2956925575926562307 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6156877289016827338} + m_CullTransparentMesh: 1 +--- !u!114 &3964108092199121655 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6156877289016827338} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.5235849, b: 0.5235849, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 7f3b1220317607e44bbb8f0e1998044a, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 2 +--- !u!114 &9173407196745132658 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6156877289016827338} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 3964108092199121655} + m_OnClick: + m_PersistentCalls: + m_Calls: [] --- !u!1 &6260722974739994160 GameObject: m_ObjectHideFlags: 0 @@ -5946,6 +7071,235 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 100 +--- !u!1 &6507916841219353653 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7499461716450536788} + - component: {fileID: 2539887872140404230} + - component: {fileID: 7432367500441650465} + m_Layer: 5 + m_Name: coin + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7499461716450536788 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6507916841219353653} + 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: 2488879254647485799} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 41.5, y: -0.0000038147} + m_SizeDelta: {x: 15.859, y: 15.859} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2539887872140404230 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6507916841219353653} + m_CullTransparentMesh: 1 +--- !u!114 &7432367500441650465 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6507916841219353653} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 1836bfb842a045f4f9a4a38b08b395ef, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &6521430387445301467 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6621757540638538027} + - component: {fileID: 1362714163699844241} + - component: {fileID: 3099977125012537327} + m_Layer: 5 + m_Name: Text (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6621757540638538027 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6521430387445301467} + 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: 5988154149403173270} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1362714163699844241 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6521430387445301467} + m_CullTransparentMesh: 1 +--- !u!114 &3099977125012537327 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6521430387445301467} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: dfa10de3e2846524089b5073175cd151, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u53D6\u6D88" +--- !u!1 &6616903122342911655 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2937041997228588268} + - component: {fileID: 7175253492260547835} + - component: {fileID: 4659634362540183014} + m_Layer: 5 + m_Name: skillIcon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2937041997228588268 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6616903122342911655} + 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: 2103071683812037302} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.000015258789, y: 0.000091552734} + m_SizeDelta: {x: 70, y: 70} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7175253492260547835 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6616903122342911655} + m_CullTransparentMesh: 1 +--- !u!114 &4659634362540183014 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6616903122342911655} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 1a62adf36834dd04181a6dd61344f8b8, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!1 &6711184958089655696 GameObject: m_ObjectHideFlags: 0 @@ -6072,6 +7426,85 @@ MonoBehaviour: m_OnValueChanged: m_PersistentCalls: m_Calls: [] +--- !u!1 &6755620312107014049 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8358609045650433087} + - component: {fileID: 9007243050989541259} + - component: {fileID: 1536502402355180482} + m_Layer: 5 + m_Name: skillTitle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8358609045650433087 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6755620312107014049} + 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: 2103071683812037302} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 42.500015, y: 54.900055} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &9007243050989541259 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6755620312107014049} + m_CullTransparentMesh: 1 +--- !u!114 &1536502402355180482 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6755620312107014049} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: dfa10de3e2846524089b5073175cd151, type: 3} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u5F53\u524D\u9009\u62E9\u7684\u6280\u80FD" --- !u!1 &6828634973988435822 GameObject: m_ObjectHideFlags: 0 @@ -6791,6 +8224,72 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 +--- !u!1 &7332110575859254484 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6564398317966452634} + - component: {fileID: 990502604901210132} + m_Layer: 5 + m_Name: uLevel_skills + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6564398317966452634 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7332110575859254484} + 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: + - {fileID: 7383026274984665155} + - {fileID: 2455925084605273242} + - {fileID: 221816933674858199} + - {fileID: 1835220823595840135} + - {fileID: 1897121867755047412} + m_Father: {fileID: 7899058211053113832} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &990502604901210132 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7332110575859254484} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 522d48b038e44bd4289b57ea155ae0b9, type: 3} + m_Name: + m_EditorClassIdentifier: + ulsSO: {fileID: 11400000, guid: acf1a85d46975694aba2cdc12b9b3dfb, type: 2} + pso: {fileID: 11400000, guid: a59c019c71199384eaac0703299047c8, type: 2} + uSkillBarPrefab: {fileID: 4419549278339915466, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + uSkillBarParent: {fileID: 1835220823595840135} + btm_skillImage: {fileID: 2149662359065615016} + skillIcon_Profile: {fileID: 4659634362540183014} + skill_thisSkillName: {fileID: 3853808377813099131} + skill_thisSkillSummary: {fileID: 2965289754456474864} + need_progress: {fileID: 4861387700679993720} + need_text: {fileID: 332714026111076778} + need_howmuchCoins: {fileID: 1460463391544595933} + yesChangeButton: {fileID: 6891947993942119220} + noCancelButton: {fileID: 247695210710589904} --- !u!1 &7529950699458791200 GameObject: m_ObjectHideFlags: 0 @@ -6947,6 +8446,47 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 +--- !u!1 &7652780697516183293 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5231010977334089563} + m_Layer: 5 + m_Name: notice + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5231010977334089563 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7652780697516183293} + 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: + - {fileID: 2034682090639879132} + - {fileID: 5954402279828222002} + - {fileID: 3514268750863439136} + - {fileID: 5988154149403173270} + - {fileID: 2488879254647485799} + - {fileID: 4430768218780818040} + m_Father: {fileID: 1897121867755047412} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 90.834, y: -98.37} + m_SizeDelta: {x: 281.667, y: 100} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &7729003685204017393 GameObject: m_ObjectHideFlags: 0 @@ -7022,6 +8562,94 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 4 +--- !u!1 &7763494018835761288 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1835220823595840135} + - component: {fileID: 5869069086063591046} + - component: {fileID: 3666572198246654472} + m_Layer: 5 + m_Name: verti + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1835220823595840135 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7763494018835761288} + 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: + - {fileID: 4865054498376321125} + - {fileID: 6411648460242401406} + - {fileID: 3590891195598464121} + - {fileID: 4594329760191535907} + - {fileID: 7734175328877407531} + - {fileID: 3536537773565864944} + - {fileID: 5752085606370037636} + - {fileID: 1347022823836729467} + - {fileID: 6863755756414146199} + - {fileID: 3219775947742724870} + - {fileID: 7962970098340026786} + m_Father: {fileID: 6564398317966452634} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -147.64, y: -20.44} + m_SizeDelta: {x: 100, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &5869069086063591046 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7763494018835761288} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 1 + m_Spacing: 5 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &3666572198246654472 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7763494018835761288} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 --- !u!1 &7816501423875034877 GameObject: m_ObjectHideFlags: 0 @@ -7441,6 +9069,85 @@ MonoBehaviour: m_EditorClassIdentifier: m_HorizontalFit: 0 m_VerticalFit: 2 +--- !u!1 &8019734510707405555 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4430768218780818040} + - component: {fileID: 8353961352513945458} + - component: {fileID: 1460463391544595933} + m_Layer: 5 + m_Name: needDetail + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4430768218780818040 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8019734510707405555} + 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: 5231010977334089563} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 9.8, y: -171.47} + m_SizeDelta: {x: 104.27, y: 23.95} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8353961352513945458 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8019734510707405555} + m_CullTransparentMesh: 1 +--- !u!114 &1460463391544595933 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8019734510707405555} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 8b8373b0af11dca46b89be60dbe469f8, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 2147483647 --- !u!1 &8036666983826655978 GameObject: m_ObjectHideFlags: 0 @@ -8397,6 +10104,81 @@ MonoBehaviour: - status: 4 icon: {fileID: 7919194353434859991, guid: b35fcaa46fa9f3e49b71c103f69df698, type: 3} displayText: +--- !u!1 &8739950018454019565 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4026385068324395086} + - component: {fileID: 2585040713080387830} + - component: {fileID: 3096483923217202497} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4026385068324395086 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8739950018454019565} + 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: 4261690897775698385} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: -15.066406, y: 0} + m_SizeDelta: {x: -19.472, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2585040713080387830 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8739950018454019565} + m_CullTransparentMesh: 1 +--- !u!114 &3096483923217202497 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8739950018454019565} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -1936355827857895663, guid: fa360ec6245a3dd43bfbae1ac1093a6e, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 4 --- !u!1 &8783024292570908401 GameObject: m_ObjectHideFlags: 0 @@ -8559,6 +10341,254 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: -20, y: -20} m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &8802335590905128329 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8230633927632511062} + - component: {fileID: 3976573865220037213} + - component: {fileID: 2965289754456474864} + m_Layer: 5 + m_Name: skillSummary + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8230633927632511062 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8802335590905128329} + 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: 2103071683812037302} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 131, y: -12.169} + m_SizeDelta: {x: 172.62, y: 45.662} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3976573865220037213 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8802335590905128329} + m_CullTransparentMesh: 1 +--- !u!114 &2965289754456474864 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8802335590905128329} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: bd4be44636ad6c24a9b117a7108a75e9, type: 3} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 11 + m_MaxSize: 18 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u5141\u8BB8\u8BBE\u7F6E\u4E00\u4E2A\u81EA\u5B9A\u7684\u767E\u5206\u6BD4\u9ED1\u5E55\u6765\u906E\u4F4F\u8F68\u9053\u3002\u6700\u5C11\u906E\u632120%\uFF0C\u6700\u591A\u906E\u632190%\u3002\u6BCF\u906E\u63211%\uFF0C\u63D0\u4F9B1.5%\u7ED3\u7B97\u5956\u52B1\u52A0\u6210\u3002" +--- !u!1 &8857892235686072722 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2034682090639879132} + - component: {fileID: 6735996646745806270} + - component: {fileID: 1216134759592633173} + - component: {fileID: 7553541148079781697} + m_Layer: 5 + m_Name: noticeText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2034682090639879132 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8857892235686072722} + 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: 5231010977334089563} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 45.35} + m_SizeDelta: {x: 256, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &6735996646745806270 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8857892235686072722} + m_CullTransparentMesh: 1 +--- !u!114 &1216134759592633173 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8857892235686072722} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: bd4be44636ad6c24a9b117a7108a75e9, type: 3} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u201C\u4E13\u5458\u7B49\u7EA7\u7279\u6280\u201D\n\n\u73A9\u5BB6\u6BCF\u5230\u8FBE\u4E00\u4E2A\u7B49\u7EA7\uFF0C\u53EF\u89E3\u9501\u4E00\u4E2A\u7279\u522B\u7684\u4E13\u5458\u7B49\u7EA7\u6280\u80FD\uFF0C\u8FD9\u4E9B\u6280\u80FD\u53EF\u4F5C\u7528\u4E8E\u5404\u79CD\u65B9\u9762\uFF0C\u60A8\u53EF\u4EE5\u968F\u610F\u5207\u6362\u5DF2\u89E3\u9501\u7684\u6280\u80FD\uFF0C\u83B7\u5F97\u610F\u60F3\u4E0D\u5230\u7684\u5947\u6548\u3002\n\n\u6BCF\u6B21\u5207\u6362\uFF0C\u9700\u8981\u82B1\u8D39\u6700\u5927\u91D1\u5E01\u76841%\n\uFF08\u6700\u5C11\u82B1\u8D39200\u8D27\u5E01\uFF09\u3002\u66F4\u6362\u4E00\u6B21\u4E13\u5458\u6280\u80FD\u540E\uFF0C\u987B\u7B49\u5F853\u573A\u6BD4\u8D5B\u51B7\u5374\u540E\u65B9\u53EF\u518D\u6B21\u5207\u6362\u3002" +--- !u!114 &7553541148079781697 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8857892235686072722} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!1 &9004414888191982066 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2921030353387055411} + - component: {fileID: 226235937606901149} + - component: {fileID: 2070595549145973883} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2921030353387055411 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9004414888191982066} + 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: 7700247477075624768} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &226235937606901149 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9004414888191982066} + m_CullTransparentMesh: 1 +--- !u!114 &2070595549145973883 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9004414888191982066} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!1 &9013549108308085337 GameObject: m_ObjectHideFlags: 0 @@ -8989,6 +11019,10 @@ MonoBehaviour: uL_curr: {fileID: 6100541213623280241} uL_post: {fileID: 8872685488964938081} view_levelDetail: {fileID: 5707390469798268039} + close_levelDetail: {fileID: 9173407196745132658} + uLevelPanel: {fileID: 7332110575859254484} + uls: {fileID: 990502604901210132} + pso: {fileID: 11400000, guid: a59c019c71199384eaac0703299047c8, type: 2} --- !u!1 &9107772938827039203 GameObject: m_ObjectHideFlags: 0 @@ -9049,6 +11083,218 @@ MonoBehaviour: more_gameHistory: {fileID: 3393082902437890837} more_gameHistoryButton: {fileID: 3805083442972962419} shut_gameHistoryButton: {fileID: 5620466248664201814} +--- !u!1 &9129013850980607410 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3514268750863439136} + - component: {fileID: 4944136553538984788} + - component: {fileID: 823334671252473693} + - component: {fileID: 6891947993942119220} + m_Layer: 5 + m_Name: yesChange + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3514268750863439136 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9129013850980607410} + 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: + - {fileID: 3527716783478569440} + m_Father: {fileID: 5231010977334089563} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -81.1, y: -195.2} + m_SizeDelta: {x: 98.692, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4944136553538984788 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9129013850980607410} + m_CullTransparentMesh: 1 +--- !u!114 &823334671252473693 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9129013850980607410} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.8454269, b: 0.6367924, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 7f3b1220317607e44bbb8f0e1998044a, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 3 +--- !u!114 &6891947993942119220 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9129013850980607410} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 823334671252473693} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &9132919281722134171 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4261690897775698385} + - component: {fileID: 4861387700679993720} + m_Layer: 5 + m_Name: Slider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4261690897775698385 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9132919281722134171} + 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: + - {fileID: 4026385068324395086} + - {fileID: 7023287984592648684} + - {fileID: 7700247477075624768} + - {fileID: 2000924201602755833} + m_Father: {fileID: 5954402279828222002} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 15.533, y: -153.4} + m_SizeDelta: {x: 281.065, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &4861387700679993720 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9132919281722134171} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 1, g: 1, b: 1, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 0 + m_TargetGraphic: {fileID: 2070595549145973883} + m_FillRect: {fileID: 4214572622581633858} + m_HandleRect: {fileID: 2921030353387055411} + m_Direction: 0 + m_MinValue: 0 + m_MaxValue: 1 + m_WholeNumbers: 0 + m_Value: 1 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] --- !u!1 &9223202854487639407 GameObject: m_ObjectHideFlags: 0 @@ -9226,6 +11472,316 @@ RectTransform: m_CorrespondingSourceObject: {fileID: 6155334586977510247, guid: c42cf5fea198c5c408a5c7a8f17809b0, type: 3} m_PrefabInstance: {fileID: 138649055616525395} m_PrefabAsset: {fileID: 0} +--- !u!1001 &1047706824905183979 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1835220823595840135} + m_Modifications: + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_SizeDelta.x + value: 450 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_SizeDelta.y + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4419549278339915466, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Name + value: levelRewardPrefab (3) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 26d681beab8631442ac57714a80f1f37, type: 3} +--- !u!224 &3219775947742724870 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + m_PrefabInstance: {fileID: 1047706824905183979} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1382759816406006301 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1835220823595840135} + m_Modifications: + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_SizeDelta.x + value: 450 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_SizeDelta.y + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchoredPosition.x + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchoredPosition.y + value: -190 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4419549278339915466, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Name + value: levelRewardPrefab (9) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 26d681beab8631442ac57714a80f1f37, type: 3} +--- !u!224 &3536537773565864944 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + m_PrefabInstance: {fileID: 1382759816406006301} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1437117087247889812 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1835220823595840135} + m_Modifications: + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_SizeDelta.x + value: 450 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_SizeDelta.y + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchoredPosition.x + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchoredPosition.y + value: -85 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4419549278339915466, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Name + value: levelRewardPrefab (8) + objectReference: {fileID: 0} + - target: {fileID: 7517620086478948793, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: descriptionOffsetX + value: 150 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 26d681beab8631442ac57714a80f1f37, type: 3} +--- !u!224 &3590891195598464121 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + m_PrefabInstance: {fileID: 1437117087247889812} + m_PrefabAsset: {fileID: 0} --- !u!1001 &1788107288474368718 PrefabInstance: m_ObjectHideFlags: 0 @@ -9328,6 +11884,210 @@ RectTransform: m_CorrespondingSourceObject: {fileID: 6155334586977510247, guid: c42cf5fea198c5c408a5c7a8f17809b0, type: 3} m_PrefabInstance: {fileID: 1788107288474368718} m_PrefabAsset: {fileID: 0} +--- !u!1001 &2154572710759123662 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1835220823595840135} + m_Modifications: + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_SizeDelta.x + value: 450 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_SizeDelta.y + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4419549278339915466, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Name + value: levelRewardPrefab (1) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 26d681beab8631442ac57714a80f1f37, type: 3} +--- !u!224 &4594329760191535907 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + m_PrefabInstance: {fileID: 2154572710759123662} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &3500797722994495894 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1835220823595840135} + m_Modifications: + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_SizeDelta.x + value: 450 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_SizeDelta.y + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchoredPosition.x + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchoredPosition.y + value: -260 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4419549278339915466, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Name + value: levelRewardPrefab (6) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 26d681beab8631442ac57714a80f1f37, type: 3} +--- !u!224 &1347022823836729467 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + m_PrefabInstance: {fileID: 3500797722994495894} + m_PrefabAsset: {fileID: 0} --- !u!1001 &4120325743226963676 PrefabInstance: m_ObjectHideFlags: 0 @@ -9552,6 +12312,10 @@ PrefabInstance: propertyPath: m_Name value: uAchievementPrefab objectReference: {fileID: 0} + - target: {fileID: 3853073308254161695, guid: c42cf5fea198c5c408a5c7a8f17809b0, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} - target: {fileID: 6155334586977510247, guid: c42cf5fea198c5c408a5c7a8f17809b0, type: 3} propertyPath: m_Pivot.x value: 0.5 @@ -9744,6 +12508,210 @@ RectTransform: m_CorrespondingSourceObject: {fileID: 6155334586977510247, guid: c42cf5fea198c5c408a5c7a8f17809b0, type: 3} m_PrefabInstance: {fileID: 5056820871234725515} m_PrefabAsset: {fileID: 0} +--- !u!1001 &5292166754513419462 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1835220823595840135} + m_Modifications: + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_SizeDelta.x + value: 450 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_SizeDelta.y + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchoredPosition.x + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchoredPosition.y + value: -155 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4419549278339915466, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Name + value: levelRewardPrefab (5) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 26d681beab8631442ac57714a80f1f37, type: 3} +--- !u!224 &7734175328877407531 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + m_PrefabInstance: {fileID: 5292166754513419462} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &5523354852071688271 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1835220823595840135} + m_Modifications: + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_SizeDelta.x + value: 450 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_SizeDelta.y + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchoredPosition.x + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchoredPosition.y + value: -365 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4419549278339915466, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Name + value: levelRewardPrefab (7) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 26d681beab8631442ac57714a80f1f37, type: 3} +--- !u!224 &7962970098340026786 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + m_PrefabInstance: {fileID: 5523354852071688271} + m_PrefabAsset: {fileID: 0} --- !u!1001 &6287447113636862892 PrefabInstance: m_ObjectHideFlags: 0 @@ -9846,6 +12814,214 @@ RectTransform: m_CorrespondingSourceObject: {fileID: 6155334586977510247, guid: c42cf5fea198c5c408a5c7a8f17809b0, type: 3} m_PrefabInstance: {fileID: 6287447113636862892} m_PrefabAsset: {fileID: 0} +--- !u!1001 &7034877354444298632 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1835220823595840135} + m_Modifications: + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_SizeDelta.x + value: 450 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_SizeDelta.y + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4419549278339915466, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Name + value: levelRewardPrefab + objectReference: {fileID: 0} + - target: {fileID: 7517620086478948793, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: descriptionOffsetX + value: 150 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 26d681beab8631442ac57714a80f1f37, type: 3} +--- !u!224 &4865054498376321125 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + m_PrefabInstance: {fileID: 7034877354444298632} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &7923874113832509033 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1835220823595840135} + m_Modifications: + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_SizeDelta.x + value: 450 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_SizeDelta.y + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4419549278339915466, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Name + value: levelRewardPrefab (2) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 26d681beab8631442ac57714a80f1f37, type: 3} +--- !u!224 &5752085606370037636 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + m_PrefabInstance: {fileID: 7923874113832509033} + m_PrefabAsset: {fileID: 0} --- !u!1001 &8181091264550989292 PrefabInstance: m_ObjectHideFlags: 0 @@ -9952,3 +13128,211 @@ RectTransform: m_CorrespondingSourceObject: {fileID: 7028528044515112815, guid: 8c7f1125b672ba54fb24d10e0cc4095a, type: 3} m_PrefabInstance: {fileID: 8181091264550989292} m_PrefabAsset: {fileID: 0} +--- !u!1001 &8853516845883926931 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1835220823595840135} + m_Modifications: + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_SizeDelta.x + value: 450 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_SizeDelta.y + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchoredPosition.x + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchoredPosition.y + value: -50 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4419549278339915466, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Name + value: levelRewardPrefab (4) + objectReference: {fileID: 0} + - target: {fileID: 7517620086478948793, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: descriptionOffsetX + value: 150 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 26d681beab8631442ac57714a80f1f37, type: 3} +--- !u!224 &6411648460242401406 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + m_PrefabInstance: {fileID: 8853516845883926931} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &9035407889471047546 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1835220823595840135} + m_Modifications: + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_SizeDelta.x + value: 450 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_SizeDelta.y + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchoredPosition.x + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_AnchoredPosition.y + value: -295 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4419549278339915466, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + propertyPath: m_Name + value: levelRewardPrefab (10) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 26d681beab8631442ac57714a80f1f37, type: 3} +--- !u!224 &6863755756414146199 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 2460305581810160109, guid: 26d681beab8631442ac57714a80f1f37, type: 3} + m_PrefabInstance: {fileID: 9035407889471047546} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/playerInfoDisplay/uAchievement/uAchievementPrefab.prefab b/Assets/playerInfoDisplay/uAchievement/uAchievementPrefab.prefab index 4cfa0f64..be543367 100644 --- a/Assets/playerInfoDisplay/uAchievement/uAchievementPrefab.prefab +++ b/Assets/playerInfoDisplay/uAchievement/uAchievementPrefab.prefab @@ -164,6 +164,7 @@ GameObject: m_Component: - component: {fileID: 6155334586977510247} - component: {fileID: 4151510886845045432} + - component: {fileID: 7562484254110654814} m_Layer: 5 m_Name: uAchievementPrefab m_TagString: Untagged @@ -208,6 +209,18 @@ MonoBehaviour: aName: {fileID: 6612220277252403227} aGetDate: {fileID: 8035948722274830026} aDescription: {fileID: 1893507208843142754} +--- !u!114 &7562484254110654814 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3853073308254161695} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76ce63b908338a84c8a3aa071b90c46b, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &4178773801772122773 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/playerInfoDisplay/uLevel.cs b/Assets/playerInfoDisplay/uLevel.cs index a867917f..2c061d36 100644 --- a/Assets/playerInfoDisplay/uLevel.cs +++ b/Assets/playerInfoDisplay/uLevel.cs @@ -10,4 +10,54 @@ public class uLevel : MonoBehaviour public Text uL_post; public Button view_levelDetail; + public Button close_levelDetail; + + [Header("uLevelPanel")] + public GameObject uLevelPanel; + + public uLevel_skills uls; + + [Header("so")] + public Player_SO pso; + + private void Start() + { + if (pso == null) + pso = Resources.Load("playerdata/playerData_uniqueData"); + + if (uLevelPanel != null) + uLevelPanel.SetActive(false); + + if (uls != null && pso != null) + uls.SetPlayerSo(pso); + + if (view_levelDetail != null) + { + view_levelDetail.onClick.RemoveListener(OpenLevelDetailPanel); + view_levelDetail.onClick.AddListener(OpenLevelDetailPanel); + } + + if (close_levelDetail != null) + { + close_levelDetail.onClick.RemoveListener(CloseLevelDetailPanel); + close_levelDetail.onClick.AddListener(CloseLevelDetailPanel); + } + } + + private void OpenLevelDetailPanel() + { + if (uLevelPanel == null) + return; + + if (uls != null && pso != null) + uls.SetPlayerSo(pso); + + uLevelPanel.SetActive(true); + } + + private void CloseLevelDetailPanel() + { + if (uLevelPanel != null) + uLevelPanel.SetActive(false); + } } diff --git a/Assets/playerInfoDisplay/uRader/uBehaviourRaderController.cs b/Assets/playerInfoDisplay/uRader/uBehaviourRaderController.cs index d822ff8a..392a1076 100644 --- a/Assets/playerInfoDisplay/uRader/uBehaviourRaderController.cs +++ b/Assets/playerInfoDisplay/uRader/uBehaviourRaderController.cs @@ -18,6 +18,7 @@ public class uBehaviourRaderController : MonoBehaviour public URadarChartController radarChartController; public UGUIChartBridge chartBridge; public RankConfig rankConfig; + public bool hideWhenOverlayVisible = false; [Header("Async")] public bool reloadOnEnable = true; @@ -175,10 +176,20 @@ public class uBehaviourRaderController : MonoBehaviour child.gameObject.SetActive(child == target); } + + if (!uRaderObj.activeSelf) + { + uRaderObj.SetActive(true); + } } private void BindOverlayVisibility() { + if (!hideWhenOverlayVisible) + { + return; + } + if (overlaySubscribed) { return; @@ -218,7 +229,7 @@ public class uBehaviourRaderController : MonoBehaviour return; } - uRaderObj.SetActive(!overlayVisible); + uRaderObj.SetActive(!hideWhenOverlayVisible || !overlayVisible); } private void ApplySummary(BehaviourRadarSummary summary) diff --git a/Assets/playerInfoDisplay/uls.meta b/Assets/playerInfoDisplay/uls.meta new file mode 100644 index 00000000..0f00e96f --- /dev/null +++ b/Assets/playerInfoDisplay/uls.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 96251f1ca650d554f886d2e2ea7bde5b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/playerInfoDisplay/uls/levelRewardPrefab.prefab b/Assets/playerInfoDisplay/uls/levelRewardPrefab.prefab new file mode 100644 index 00000000..2d212d36 --- /dev/null +++ b/Assets/playerInfoDisplay/uls/levelRewardPrefab.prefab @@ -0,0 +1,296 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2099462153568767799 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 665396819362690529} + - component: {fileID: 3192217589302937993} + - component: {fileID: 5556623676502886536} + m_Layer: 5 + m_Name: levelID + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &665396819362690529 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2099462153568767799} + 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: 9152270112823009895} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -107.33, y: 0} + m_SizeDelta: {x: 25.792, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3192217589302937993 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2099462153568767799} + m_CullTransparentMesh: 1 +--- !u!114 &5556623676502886536 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2099462153568767799} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 8b8373b0af11dca46b89be60dbe469f8, type: 3} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 10 +--- !u!1 &2343926165364488871 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9152270112823009895} + - component: {fileID: 4801688296739999581} + - component: {fileID: 4501378674247754304} + m_Layer: 5 + m_Name: btm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9152270112823009895 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2343926165364488871} + 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: + - {fileID: 2290428063649654242} + - {fileID: 665396819362690529} + m_Father: {fileID: 2460305581810160109} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 250, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4801688296739999581 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2343926165364488871} + m_CullTransparentMesh: 1 +--- !u!114 &4501378674247754304 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2343926165364488871} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -52179173452712981, guid: be120bf969ae2c84fa997ecca6dd28e6, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 2 +--- !u!1 &3339470438795980614 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2290428063649654242} + - component: {fileID: 4129409205783608839} + - component: {fileID: 534678815217464394} + m_Layer: 5 + m_Name: skillName + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2290428063649654242 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3339470438795980614} + 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: 9152270112823009895} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 1.4, y: 0} + m_SizeDelta: {x: 187.733, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4129409205783608839 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3339470438795980614} + m_CullTransparentMesh: 1 +--- !u!114 &534678815217464394 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3339470438795980614} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: dfa10de3e2846524089b5073175cd151, type: 3} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u5076\u50CF\u5927\u5E08\uFF1A\u8D5B\u540E\u611F\u609F" +--- !u!1 &4419549278339915466 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2460305581810160109} + - component: {fileID: 7517620086478948793} + m_Layer: 5 + m_Name: levelRewardPrefab + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2460305581810160109 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4419549278339915466} + 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: + - {fileID: 9152270112823009895} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 450, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &7517620086478948793 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4419549278339915466} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 427d68583c7d9ab4588888b68dc7a8d2, type: 3} + m_Name: + m_EditorClassIdentifier: + enableSprite: {fileID: -52179173452712981, guid: be120bf969ae2c84fa997ecca6dd28e6, type: 3} + availableSprite: {fileID: 2561534620446350566, guid: 23a48ca1e983a4c47971fcf7eab26b89, type: 3} + lockedSprite: {fileID: -1936355827857895663, guid: fa360ec6245a3dd43bfbae1ac1093a6e, type: 3} + unknownSprite: {fileID: 21300000, guid: 931f6455943555649a61ed7f1c76cbf6, type: 3} + preSelectSprite: {fileID: 7919194353434859991, guid: b35fcaa46fa9f3e49b71c103f69df698, type: 3} + levelName: {fileID: 5556623676502886536} + statusImg: {fileID: 4501378674247754304} + thisSkillName: {fileID: 534678815217464394} + descriptionPrefab: {fileID: 2219571326304505587, guid: bde76837f913f3943836d4f83292618b, type: 3} + descriptionOffsetX: 150 diff --git a/Assets/playerInfoDisplay/uls/levelRewardPrefab.prefab.meta b/Assets/playerInfoDisplay/uls/levelRewardPrefab.prefab.meta new file mode 100644 index 00000000..e6bd3ede --- /dev/null +++ b/Assets/playerInfoDisplay/uls/levelRewardPrefab.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 26d681beab8631442ac57714a80f1f37 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/playerInfoDisplay/uls/lrPrefab.cs b/Assets/playerInfoDisplay/uls/lrPrefab.cs new file mode 100644 index 00000000..53234b7b --- /dev/null +++ b/Assets/playerInfoDisplay/uls/lrPrefab.cs @@ -0,0 +1,184 @@ +using UnityEngine; +using UnityEngine.UI; +using UnityEngine.EventSystems; +using System.Collections; + +public class lrPrefab : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerClickHandler +{ + [Header("sprite")] + public Sprite enableSprite; + public Sprite availableSprite; + public Sprite lockedSprite; + public Sprite unknownSprite; + public Sprite preSelectSprite; + + [Header("uis")] + public Text levelName; + public Image statusImg; + public Text thisSkillName; + + [Header("desOBJ")] + public GameObject descriptionPrefab; + public float descriptionOffsetX = 80f; + + private uLevel_skills owner; + private userLevel_skills_SO ownerSo; + private userLevel_skills_SO.UserLevelSkillEntry boundEntry; + private int boundIndex = -1; + private bool isUnlocked = false; + private Coroutine hoverCoroutine; + private GameObject spawnedDescription; + + public void Bind(uLevel_skills ownerController, userLevel_skills_SO sourceSo, int index, userLevel_skills_SO.UserLevelSkillEntry entry, bool unlocked) + { + owner = ownerController; + ownerSo = sourceSo; + boundIndex = index; + boundEntry = entry; + isUnlocked = unlocked; + + if (levelName != null) + levelName.text = entry != null ? entry.userLevel.ToString() : string.Empty; + + RefreshVisualState(); + } + + public void RefreshVisualState() + { + if (owner != null && boundEntry != null) + isUnlocked = owner.IsSkillUnlocked(boundEntry); + + if (boundEntry == null) + return; + + bool revealLockedSkills = PlayerSkillService.IsSkillEnabled(7); + bool shouldHideLockedSkillInfo = !isUnlocked && !revealLockedSkills; + + if (thisSkillName != null) + { + thisSkillName.text = shouldHideLockedSkillInfo + ? "?????" + : (boundEntry.skillName ?? string.Empty); + } + + if (statusImg == null) + return; + + if (owner != null && owner.IsSkillPreselected(boundIndex)) + statusImg.sprite = preSelectSprite != null ? preSelectSprite : availableSprite; + else if (boundEntry.isEnabled) + statusImg.sprite = enableSprite; + else if (isUnlocked) + statusImg.sprite = availableSprite; + else if (shouldHideLockedSkillInfo) + statusImg.sprite = unknownSprite != null ? unknownSprite : lockedSprite; + else + statusImg.sprite = lockedSprite; + } + + public void OnPointerEnter(PointerEventData eventData) + { + if (boundEntry == null || descriptionPrefab == null) + return; + + if (!isUnlocked && !PlayerSkillService.IsSkillEnabled(7)) + return; + + if (hoverCoroutine != null) + StopCoroutine(hoverCoroutine); + + hoverCoroutine = StartCoroutine(ShowDescriptionAfterDelay()); + } + + public void OnPointerExit(PointerEventData eventData) + { + if (hoverCoroutine != null) + { + StopCoroutine(hoverCoroutine); + hoverCoroutine = null; + } + + HideDescription(); + } + + public void OnPointerClick(PointerEventData eventData) + { + if (owner == null || boundIndex < 0) + return; + + owner.ToggleSkill(boundIndex); + } + + private IEnumerator ShowDescriptionAfterDelay() + { + yield return new WaitForSeconds(0.5f); + hoverCoroutine = null; + ShowDescription(); + } + + private void ShowDescription() + { + if (spawnedDescription != null || descriptionPrefab == null || boundEntry == null) + return; + + RectTransform root = ResolveDescriptionRoot(); + if (root == null) + return; + + spawnedDescription = Instantiate(descriptionPrefab, root); + spawnedDescription.SetActive(true); + spawnedDescription.transform.SetAsLastSibling(); + + esDesPrefab detail = spawnedDescription.GetComponent(); + if (detail != null) + detail.Bind(boundEntry.skillName, boundEntry.skillIcon, boundEntry.skillDescription, boundEntry.skillSummary); + + RectTransform spawnedRect = spawnedDescription.GetComponent(); + if (spawnedRect == null) + return; + + Canvas canvas = root.GetComponentInParent(); + Camera eventCamera = null; + if (canvas != null && canvas.renderMode != RenderMode.ScreenSpaceOverlay) + eventCamera = canvas.worldCamera; + + Vector2 localPoint; + RectTransformUtility.ScreenPointToLocalPointInRectangle(root, Input.mousePosition, eventCamera, out localPoint); + localPoint.x += descriptionOffsetX; + spawnedRect.anchoredPosition = localPoint; + } + + private RectTransform ResolveDescriptionRoot() + { + Canvas canvas = GetComponentInParent(); + if (canvas == null) + return null; + + Canvas rootCanvas = canvas.rootCanvas != null ? canvas.rootCanvas : canvas; + return rootCanvas.transform as RectTransform; + } + + private void HideDescription() + { + if (spawnedDescription == null) + return; + + if (Application.isPlaying) + Destroy(spawnedDescription); + else + DestroyImmediate(spawnedDescription); + + spawnedDescription = null; + } + + private void OnDisable() + { + if (hoverCoroutine != null) + { + StopCoroutine(hoverCoroutine); + hoverCoroutine = null; + } + + HideDescription(); + } +} diff --git a/Assets/playerInfoDisplay/uls/lrPrefab.cs.meta b/Assets/playerInfoDisplay/uls/lrPrefab.cs.meta new file mode 100644 index 00000000..6fb98923 --- /dev/null +++ b/Assets/playerInfoDisplay/uls/lrPrefab.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 427d68583c7d9ab4588888b68dc7a8d2 \ No newline at end of file diff --git a/Assets/playerInfoDisplay/uls/uLevel_skills.cs b/Assets/playerInfoDisplay/uls/uLevel_skills.cs new file mode 100644 index 00000000..385b80d6 --- /dev/null +++ b/Assets/playerInfoDisplay/uls/uLevel_skills.cs @@ -0,0 +1,415 @@ +using UnityEngine; +using UnityEngine.UI; + +public class uLevel_skills : MonoBehaviour +{ + public userLevel_skills_SO ulsSO; + public Player_SO pso; + + [Header("objs")] + public GameObject uSkillBarPrefab; + public Transform uSkillBarParent; + + [Header("current selected skill details")] + public Image btm_skillImage; + public Image skillIcon_Profile; + public Text skill_thisSkillName; + public Text skill_thisSkillSummary; + + [Header("change")] + public Slider need_progress; + public Text need_text; + public Text need_howmuchCoins; + public Button yesChangeButton; + public Button noCancelButton; + + private readonly System.Collections.Generic.List spawnedBars = new System.Collections.Generic.List(); + private bool hasStarted = false; + private int pendingSkillIndex = -1; + private Color defaultNeedCoinsColor = Color.white; + private const int SkillSwitchCooldownMatches = 3; + private const int SkillSwitchMinimumCost = 200; + + private void Start() + { + hasStarted = true; + CacheUiDefaults(); + RegisterButtons(); + PlayerSkillService.RegisterSkillAsset(ulsSO); + RefreshSkillBars(); + } + + private void OnEnable() + { + CacheUiDefaults(); + RegisterButtons(); + PlayerSkillService.RegisterSkillAsset(ulsSO); + if (hasStarted) + { + RefreshSkillBars(); + } + } + + private void OnDestroy() + { + UnregisterButtons(); + } + + public void SetPlayerSo(Player_SO playerSo) + { + pso = playerSo; + } + + public void RefreshSkillBars() + { + EnsurePlayerSo(); + + if (uSkillBarParent == null || uSkillBarPrefab == null || ulsSO == null) + return; + + NormalizeSelectionState(); + ClearExistingBars(); + spawnedBars.Clear(); + + for (int i = 0; i < ulsSO.skills.Count; i++) + { + var entry = ulsSO.skills[i]; + if (entry == null) + continue; + + GameObject instance = Instantiate(uSkillBarPrefab, uSkillBarParent); + instance.SetActive(true); + + lrPrefab bar = instance.GetComponent(); + if (bar == null) + continue; + + bar.Bind(this, ulsSO, i, entry, IsSkillUnlocked(entry)); + spawnedBars.Add(bar); + } + + RefreshDetailPanel(); + RefreshChangeUi(); + } + + public void ToggleSkill(int index) + { + if (ulsSO == null || index < 0 || index >= ulsSO.skills.Count) + return; + + var entry = ulsSO.skills[index]; + if (entry == null || !IsSkillUnlocked(entry)) + return; + + int currentEnabledIndex = GetEnabledSkillIndex(); + if (index == currentEnabledIndex) + { + pendingSkillIndex = -1; + RefreshDetailPanel(); + RefreshChangeUi(); + RefreshStatusesOnly(); + return; + } + + pendingSkillIndex = pendingSkillIndex == index ? -1 : index; + RefreshDetailPanel(); + RefreshChangeUi(); + RefreshStatusesOnly(); + } + + public bool IsSkillPreselected(int index) + { + return pendingSkillIndex >= 0 && pendingSkillIndex == index; + } + + public bool IsSkillUnlocked(userLevel_skills_SO.UserLevelSkillEntry entry) + { + EnsurePlayerSo(); + + if (entry == null) + return false; + + int currentExp = pso != null ? Mathf.Max(0, pso.player_currentEXP) : 0; + return currentExp >= Mathf.Max(0, entry.thisLevelNeedExps); + } + + private void RefreshStatusesOnly() + { + for (int i = 0; i < spawnedBars.Count; i++) + { + if (spawnedBars[i] == null) + continue; + + spawnedBars[i].RefreshVisualState(); + } + } + + private void RefreshDetailPanel() + { + if (ulsSO == null || ulsSO.skills == null || ulsSO.skills.Count == 0) + { + SetDetailPanel(null); + return; + } + + int detailIndex = pendingSkillIndex >= 0 ? pendingSkillIndex : GetEnabledSkillIndex(); + if (detailIndex < 0 || detailIndex >= ulsSO.skills.Count) + { + SetDetailPanel(null); + return; + } + + SetDetailPanel(ulsSO.skills[detailIndex]); + } + + private void SetDetailPanel(userLevel_skills_SO.UserLevelSkillEntry entry) + { + if (btm_skillImage != null) + { + btm_skillImage.sprite = entry != null ? entry.skillIcon : null; + } + + if (skillIcon_Profile != null) + { + skillIcon_Profile.sprite = entry != null ? entry.skillIcon : null; + } + + if (skill_thisSkillName != null) + { + skill_thisSkillName.text = entry != null ? (entry.skillName ?? string.Empty) : string.Empty; + } + + if (skill_thisSkillSummary != null) + { + skill_thisSkillSummary.text = entry != null ? (entry.skillDescription ?? string.Empty) : string.Empty; + } + } + + private void RefreshChangeUi() + { + int cooldownRemaining = PlayerSkillService.GetSkillSwitchCooldownRemainingMatches(); + int currentEnabledIndex = GetEnabledSkillIndex(); + bool hasPendingSelection = pendingSkillIndex >= 0 && pendingSkillIndex != currentEnabledIndex; + + if (need_text != null) + { + need_text.text = cooldownRemaining > 0 + ? $"还需要{cooldownRemaining}场比赛" + : "可以切换技能"; + } + + if (need_progress != null) + { + need_progress.minValue = 0f; + need_progress.maxValue = 1f; + need_progress.value = cooldownRemaining > 0 + ? Mathf.Clamp01((float)(SkillSwitchCooldownMatches - cooldownRemaining) / SkillSwitchCooldownMatches) + : 1f; + } + + int switchCost = GetSkillSwitchCost(); + bool hasEnoughCoins = HasEnoughCoinsForSwitch(switchCost); + + if (need_howmuchCoins != null) + { + need_howmuchCoins.text = switchCost.ToString(); + need_howmuchCoins.color = hasEnoughCoins ? defaultNeedCoinsColor : Color.red; + } + + if (yesChangeButton != null) + { + yesChangeButton.interactable = hasPendingSelection && cooldownRemaining <= 0 && hasEnoughCoins; + } + + if (noCancelButton != null) + { + noCancelButton.interactable = pendingSkillIndex >= 0; + } + } + + private int GetSkillSwitchCost() + { + int currentCoins = Application.isPlaying + ? PlayerEconomyLedger.EnsureInstance().GetCoins() + : (pso != null ? Mathf.Max(0, pso.Coins) : 0); + int percentCost = Mathf.CeilToInt(currentCoins * 0.01f); + return Mathf.Max(SkillSwitchMinimumCost, percentCost); + } + + private bool HasEnoughCoinsForSwitch(int amount) + { + if (amount <= 0) + return true; + + return Application.isPlaying + ? PlayerEconomyLedger.EnsureInstance().HasEnoughCoins(amount) + : (pso != null && pso.Coins >= amount); + } + + private void HandleConfirmSwitchClicked() + { + int currentEnabledIndex = GetEnabledSkillIndex(); + if (pendingSkillIndex < 0 || pendingSkillIndex == currentEnabledIndex || ulsSO == null) + { + return; + } + + if (PlayerSkillService.GetSkillSwitchCooldownRemainingMatches() > 0) + { + RefreshChangeUi(); + return; + } + + int switchCost = GetSkillSwitchCost(); + bool spent = Application.isPlaying + ? PlayerEconomyLedger.EnsureInstance().TrySpendCoins(switchCost) + : (pso != null && pso.TrySpendCoins(switchCost)); + if (!spent) + { + RefreshChangeUi(); + return; + } + + PlayerSkillService.ConfirmSkillSelection(ulsSO, pendingSkillIndex); + pendingSkillIndex = -1; + MarkSkillsDirty(); + RefreshStatusesOnly(); + RefreshDetailPanel(); + RefreshChangeUi(); + } + + private void HandleCancelPreselectClicked() + { + pendingSkillIndex = -1; + RefreshStatusesOnly(); + RefreshDetailPanel(); + RefreshChangeUi(); + } + + private void ClearExistingBars() + { + for (int i = uSkillBarParent.childCount - 1; i >= 0; i--) + { + Transform child = uSkillBarParent.GetChild(i); + if (Application.isPlaying) + Destroy(child.gameObject); + else + DestroyImmediate(child.gameObject); + } + } + + private void MarkSkillsDirty() + { +#if UNITY_EDITOR + if (!Application.isPlaying && ulsSO != null) + UnityEditor.EditorUtility.SetDirty(ulsSO); +#endif + } + + private void EnsurePlayerSo() + { + if (pso == null) + pso = Resources.Load("playerdata/playerData_uniqueData"); + } + + private void CacheUiDefaults() + { + if (need_howmuchCoins != null) + { + defaultNeedCoinsColor = need_howmuchCoins.color; + } + } + + private void RegisterButtons() + { + if (yesChangeButton != null) + { + yesChangeButton.onClick.RemoveListener(HandleConfirmSwitchClicked); + yesChangeButton.onClick.AddListener(HandleConfirmSwitchClicked); + } + + if (noCancelButton != null) + { + noCancelButton.onClick.RemoveListener(HandleCancelPreselectClicked); + noCancelButton.onClick.AddListener(HandleCancelPreselectClicked); + } + } + + private void UnregisterButtons() + { + if (yesChangeButton != null) + { + yesChangeButton.onClick.RemoveListener(HandleConfirmSwitchClicked); + } + + if (noCancelButton != null) + { + noCancelButton.onClick.RemoveListener(HandleCancelPreselectClicked); + } + } + + private int GetEnabledSkillIndex() + { + if (ulsSO == null || ulsSO.skills == null) + return -1; + + for (int i = 0; i < ulsSO.skills.Count; i++) + { + var entry = ulsSO.skills[i]; + if (entry != null && entry.isEnabled) + return i; + } + + return -1; + } + + private void NormalizeSelectionState() + { + if (ulsSO == null || ulsSO.skills == null || ulsSO.skills.Count == 0) + return; + + int selectedIndex = -1; + for (int i = 0; i < ulsSO.skills.Count; i++) + { + var entry = ulsSO.skills[i]; + if (entry == null || !entry.isEnabled) + continue; + + if (selectedIndex < 0) + { + selectedIndex = i; + } + else + { + entry.isEnabled = false; + } + } + + if (selectedIndex < 0) + { + for (int i = 0; i < ulsSO.skills.Count; i++) + { + var entry = ulsSO.skills[i]; + if (entry == null) + continue; + + selectedIndex = i; + entry.isEnabled = true; + break; + } + } + + for (int i = 0; i < ulsSO.skills.Count; i++) + { + var entry = ulsSO.skills[i]; + if (entry == null) + continue; + + entry.isEnabled = (i == selectedIndex); + } + + MarkSkillsDirty(); + PlayerSkillService.RegisterSkillAsset(ulsSO); + pendingSkillIndex = -1; + } +} diff --git a/Assets/playerInfoDisplay/uls/uLevel_skills.cs.meta b/Assets/playerInfoDisplay/uls/uLevel_skills.cs.meta new file mode 100644 index 00000000..6c62f592 --- /dev/null +++ b/Assets/playerInfoDisplay/uls/uLevel_skills.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 522d48b038e44bd4289b57ea155ae0b9 \ No newline at end of file diff --git a/Assets/playerInfoDisplay/uls/ulsSO.asset b/Assets/playerInfoDisplay/uls/ulsSO.asset new file mode 100644 index 00000000..42832b1d --- /dev/null +++ b/Assets/playerInfoDisplay/uls/ulsSO.asset @@ -0,0 +1,92 @@ +%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: 19a25568f1e1a8b4093dce8a6753be0e, type: 3} + m_Name: ulsSO + m_EditorClassIdentifier: + skills: + - userLevel: 0 + skillName: "\u8D5B\u524D\u51C6\u5907" + skillDescription: "\u4F60\u5DF2\u6765\u5230\u672C\u7D22\u5C3C\u514B\u4E16\u754C\u3002\u8D5B\u524D\u51C6\u5907\u65F6\uFF0C\u4F60\u53EF\u4EE5\u65E0\u9650\u5236\u5730\u8FDB\u5165\u65B0\u624B\u6559\u7A0B\u3002" + skillSummary: "\u5378\u4E0B\u5B83\u65F6\u4F60\u5DF2\u4E0D\u518D\u662F\u65B0\u624B" + isEnabled: 1 + skillIcon: {fileID: 0} + thisLevelNeedExps: 0 + - userLevel: 1 + skillName: "\u8BB0\u5FC6\u8D2D\u4E70\u8BA1\u5212" + skillDescription: "\u5141\u8BB8\u4F60\u4EE510\u91D1\u5E01\u8D2D\u4E701\u4E2A\u8BB0\u5FC6\u788E\u7247\u3002\u88C5\u5907\u6B64\u6280\u80FD\u65F6\u53EF\u4E8E\u5546\u5E97\u89E3\u9501\u4E00\u4E2A\u8D2D\u4E70\u9009\u9879\u3002" + skillSummary: "\u4ECE\u8001\u5E08\u90A3\u91CC\u65B0\u5B66\u4E86\u4EC0\u4E48\uFF1F" + isEnabled: 0 + skillIcon: {fileID: 0} + thisLevelNeedExps: 200 + - userLevel: 2 + skillName: "\u8BB0\u5FC6\u5F52\u8FD8\u8BA1\u5212" + skillDescription: "\u5141\u8BB8\u4F60\u5C061\u4E2A\u8BB0\u5FC6\u788E\u7247\u4EE54\u91D1\u5E01\u552E\u51FA\u3002\u88C5\u5907\u6B64\u6280\u80FD\u65F6\u53EF\u4E8E\u5546\u5E97\u89E3\u9501\u4E00\u4E2A\u8D2D\u4E70\u9009\u9879\u3002" + skillSummary: "\u8001\u5E08\u6559\u7ED9\u4F60\u7684\u53C8\u8FD8\u56DE\u53BB\u4E86\u5417\uFF1F" + isEnabled: 0 + skillIcon: {fileID: 0} + thisLevelNeedExps: 300 + - userLevel: 3 + skillName: "\u6311\u6218\u8005\u6A21\u578B" + skillDescription: "\u5141\u8BB8\u8BBE\u7F6E\u4E00\u4E2A\u81EA\u5B9A\u7684\u767E\u5206\u6BD4\u9ED1\u5E55\u6765\u906E\u4F4F\u8F68\u9053\u3002\u6700\u5C11\u906E\u632120%\uFF0C\u6700\u591A\u906E\u632190%\u3002\u6BCF\u906E\u63211%\uFF0C\u63D0\u4F9B1.5%\u7ED3\u7B97\u5956\u52B1\u52A0\u6210\u3002" + skillSummary: "\u9AD8\u98CE\u9669\u9AD8\u56DE\u62A5\uFF0C\u597D\u5947\u5FC3\u5BB3\u6B7B\u732B\u3002" + isEnabled: 0 + skillIcon: {fileID: 0} + thisLevelNeedExps: 400 + - userLevel: 4 + skillName: "\u8D5B\u540E\u611F\u609F" + skillDescription: "\u6BCF\u8FDB\u884C10\u573A\u6BD4\u8D5B\u53EF\u83B7\u5F97\u4E00\u4EF6\u968F\u673A\u7C7B\u578B\u968F\u673A\u5C5E\u6027\u7684\u8BB0\u5FC6\u3002\u5728\u66F4\u6362\u6280\u80FD\u65F6\u6E05\u96F6\u8BA1\u6570\u5668\u3002" + skillSummary: + isEnabled: 0 + skillIcon: {fileID: 0} + thisLevelNeedExps: 500 + - userLevel: 5 + skillName: "\u6211\u7231\u53D1\u660E" + skillDescription: "\u4F60\u7684\u8BB0\u5FC6\u878D\u5408\u548C\u52A0\u901F\u6240\u9700\u7684\u8D27\u5E01\u51CF\u534A\u3002" + skillSummary: + isEnabled: 0 + skillIcon: {fileID: 0} + thisLevelNeedExps: 600 + - userLevel: 6 + skillName: "\u8FFD\u68A6\u4E4B\u8DEF" + skillDescription: "\u7ED3\u7B97\u65F6\uFF0C\u83B7\u5F97\u5076\u50CF\u5206\u65701\u2030\u7684\u8BB0\u5FC6\u788E\u7247\u3002" + skillSummary: + isEnabled: 0 + skillIcon: {fileID: 0} + thisLevelNeedExps: 700 + - userLevel: 7 + skillName: "\u6D1E\u5BDF" + skillDescription: "\u4F60\u53EF\u4EE5\u770B\u5230\u89D2\u8272\u672A\u89E3\u9501\u7684\u6280\u80FD\u53CA\u5176\u4ECB\u7ECD\u3002" + skillSummary: "\u4F60\u7684\u76EE\u5149\u6781\u5177\u6218\u7565\u524D\u77BB\u6027\u3002" + isEnabled: 0 + skillIcon: {fileID: 0} + thisLevelNeedExps: 800 + - userLevel: 8 + skillName: "95\u6298" + skillDescription: "\u6D88\u8D39\u8BB0\u5FC6\u788E\u7247\u548Ccoins\u65F6\u767E\u5206\u6BD4\u8FD4\u8FD8\u3002\u4F60\u6BCF\u62E5\u6709\u4E00\u4E2A\u5076\u50CF\uFF0C\u589E\u52A0\u6D88\u8D39\u8FD4\u8FD8\u7684\u6BD4\u4F8B0.5%\u3002\u6700\u591A\u5408\u8BA1\u8FD4\u8FD85%\u3002" + skillSummary: + isEnabled: 0 + skillIcon: {fileID: 0} + thisLevelNeedExps: 900 + - userLevel: 9 + skillName: "\u5229\u6DA6\u63D0\u53D6\u5668" + skillDescription: "\u7ED3\u7B97\u65F6\uFF0C\u83B7\u5F97\u5076\u50CF\u5206\u65702\u2030\u7684\u91D1\u5E01\u3002" + skillSummary: "\u6B7B\u4E0E\u7A0E" + isEnabled: 0 + skillIcon: {fileID: 0} + thisLevelNeedExps: 1100 + - userLevel: 10 + skillName: "\u9876\u5CF0\u76F8\u89C1" + skillDescription: "\u6E38\u620F\u4E2D\u4F60\u7684\u89C6\u89D2\u9AD8\u5EA6\u63D0\u9AD810%\u3002" + skillSummary: "\u611F\u6069\u6559\u7EC3\u3002" + isEnabled: 0 + skillIcon: {fileID: 0} + thisLevelNeedExps: 1500 diff --git a/Assets/playerInfoDisplay/uls/ulsSO.asset.meta b/Assets/playerInfoDisplay/uls/ulsSO.asset.meta new file mode 100644 index 00000000..7f08634c --- /dev/null +++ b/Assets/playerInfoDisplay/uls/ulsSO.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: acf1a85d46975694aba2cdc12b9b3dfb +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/playerInfoDisplay/uls/userLevel_skills_SO.cs b/Assets/playerInfoDisplay/uls/userLevel_skills_SO.cs new file mode 100644 index 00000000..894c863f --- /dev/null +++ b/Assets/playerInfoDisplay/uls/userLevel_skills_SO.cs @@ -0,0 +1,20 @@ +using UnityEngine; +using System.Collections.Generic; + +[CreateAssetMenu(fileName = "userLevel_skills", menuName = "Player/UserLevel Skills SO")] +public class userLevel_skills_SO : ScriptableObject +{ + [System.Serializable] + public class UserLevelSkillEntry + { + public int userLevel; + public string skillName; + [TextArea(3, 10)] public string skillDescription; + public string skillSummary; + public bool isEnabled; + public Sprite skillIcon; + public int thisLevelNeedExps; + } + + public List skills = new List(); +} diff --git a/Assets/playerInfoDisplay/uls/userLevel_skills_SO.cs.meta b/Assets/playerInfoDisplay/uls/userLevel_skills_SO.cs.meta new file mode 100644 index 00000000..8fdfc024 --- /dev/null +++ b/Assets/playerInfoDisplay/uls/userLevel_skills_SO.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 19a25568f1e1a8b4093dce8a6753be0e \ No newline at end of file diff --git a/Assets/scripts/Combat/AllyCombatant.cs b/Assets/scripts/Combat/AllyCombatant.cs index 8518f362..bdb0f52b 100644 --- a/Assets/scripts/Combat/AllyCombatant.cs +++ b/Assets/scripts/Combat/AllyCombatant.cs @@ -15,6 +15,7 @@ using TMPro; /// public class AllyCombatant : MonoBehaviour, ICombatant { + private static AllyHero_SO[] cachedAllAllyHeroes; public int slotIndex = 0; // Documentation text normalized. // runtime stats @@ -989,8 +990,8 @@ public class AllyCombatant : MonoBehaviour, ICombatant if (id > 0) { - var all = Resources.LoadAll(""); - foreach (var a in all) + EnsureAllyHeroCache(); + foreach (var a in cachedAllAllyHeroes) { if (a != null && a.ally_heroID == id) { @@ -1049,6 +1050,12 @@ public class AllyCombatant : MonoBehaviour, ICombatant } } + private static void EnsureAllyHeroCache() + { + if (cachedAllAllyHeroes != null) return; + cachedAllAllyHeroes = Resources.LoadAll("") ?? Array.Empty(); + } + // Documentation text normalized. private static AllyHero_SO.AllyLevelInfo GetEffectiveLevelForExp(AllyHero_SO so, int exp) { diff --git a/Assets/scripts/Combat/EnemyCombatant.cs b/Assets/scripts/Combat/EnemyCombatant.cs index 26684310..6a3c925b 100644 --- a/Assets/scripts/Combat/EnemyCombatant.cs +++ b/Assets/scripts/Combat/EnemyCombatant.cs @@ -414,6 +414,8 @@ public class EnemyCombatant : MonoBehaviour, ICombatant } } + AwardBountyScoreToLivingAllies(); + // Finally mark dead isDead = true; @@ -510,6 +512,62 @@ public class EnemyCombatant : MonoBehaviour, ICombatant public bool IsDead => isDead; // New: allow EffectSystem/SkillBuilder to adjust enemy max HP safely + private void AwardBountyScoreToLivingAllies() + { + if (sourceData == null) + return; + + float difficultyLevel = ResolveCurrentDifficultyLevel(); + var stats = sourceData.GetStatsByDifficultyID(_currentDifficultyID); + int calculatedMaxHp = Mathf.Max(0, stats.enemy_maxHP); + float totalBounty = calculatedMaxHp * 0.05f * difficultyLevel + sourceData.enemyBountyBonus; + if (totalBounty <= 0f) + return; + + AllyCombatant[] allies = UnityEngine.Object.FindObjectsByType(FindObjectsInactive.Include, FindObjectsSortMode.None); + List livingAllies = new List(); + for (int i = 0; i < allies.Length; i++) + { + AllyCombatant ally = allies[i]; + if (ally == null) + continue; + if (ally.IsDead || ally.maxHP <= 0 || !ally.gameObject.activeInHierarchy) + continue; + livingAllies.Add(ally); + } + + if (livingAllies.Count == 0) + return; + + int awardPerAlly = Mathf.CeilToInt(totalBounty / livingAllies.Count); + if (awardPerAlly <= 0) + return; + + for (int i = 0; i < livingAllies.Count; i++) + { + livingAllies[i].AddScoreDirect(awardPerAlly); + } + } + + private float ResolveCurrentDifficultyLevel() + { + BeatmapManager beatmapManager = BeatmapManager.Instance; + if (beatmapManager == null || beatmapManager.assignedSongData == null || beatmapManager.assignedSongData.chartFiles == null) + return 1f; + + List chartFiles = beatmapManager.assignedSongData.chartFiles; + for (int i = 0; i < chartFiles.Count; i++) + { + ChartFileEntry entry = chartFiles[i]; + if (entry == null || entry.difficulty != _currentDifficultyID) + continue; + + return Mathf.Max(0f, entry.difficultyLEVEL); + } + + return 1f; + } + public void SetMaxHP(int newMax, bool keepCurrentRatio = true) { if (newMax < 1) newMax = 1; diff --git a/Assets/scripts/Data/EnemyData_SO.cs b/Assets/scripts/Data/EnemyData_SO.cs index 4ea19d73..c4063f21 100644 --- a/Assets/scripts/Data/EnemyData_SO.cs +++ b/Assets/scripts/Data/EnemyData_SO.cs @@ -1,4 +1,4 @@ -using UnityEngine; +using UnityEngine; using System.Collections.Generic; using Spine.Unity; @@ -45,6 +45,9 @@ public class EnemyData_SO : ScriptableObject [Header("Inspector")] public EnemyType enemyType = EnemyType.Simple; + [Header("Reward")] + [Tooltip("Flat bounty score bonus added on top of the HP-based bounty formula.")] + public int enemyBountyBonus = 0; public enum EnemyType { @@ -132,3 +135,4 @@ public class EnemyData_SO : ScriptableObject [Range(0f, 1f)] public float manaGainOnDamagePercent = 0.2f; // default 20% } + diff --git a/Assets/scripts/_runtimecache/PlayerEconomyLedger.cs b/Assets/scripts/_runtimecache/PlayerEconomyLedger.cs index b74ff522..0877a782 100644 --- a/Assets/scripts/_runtimecache/PlayerEconomyLedger.cs +++ b/Assets/scripts/_runtimecache/PlayerEconomyLedger.cs @@ -69,6 +69,10 @@ public sealed class PlayerEconomyLedger : MonoBehaviour PlayerEconomyPayload loadedPayload; loadedFromSave = PlayerEconomyStorage.TryLoad(out loadedPayload); payload = loadedPayload; + if (payload == null) + { + payload = PlayerEconomyStorage.CreateDefaultPayload(); + } initialized = true; SaveNow(); } @@ -165,6 +169,11 @@ public sealed class PlayerEconomyLedger : MonoBehaviour payload.coins -= amount; SaveNow(); DailyTaskEventHub.ReportSpendCoins(amount); + int refundAmount = PlayerSkillService.GetCoinRefundAmount(amount); + if (refundAmount > 0) + { + AddCoins(refundAmount); + } return true; } @@ -183,6 +192,11 @@ public sealed class PlayerEconomyLedger : MonoBehaviour payload.material -= amount; SaveNow(); + int refundAmount = PlayerSkillService.GetMaterialRefundAmount(amount); + if (refundAmount > 0) + { + AddMaterial(refundAmount); + } return true; } diff --git a/Assets/scripts/_runtimecache/PlayerEconomyStorage.cs b/Assets/scripts/_runtimecache/PlayerEconomyStorage.cs index daec4a47..96082276 100644 --- a/Assets/scripts/_runtimecache/PlayerEconomyStorage.cs +++ b/Assets/scripts/_runtimecache/PlayerEconomyStorage.cs @@ -85,7 +85,7 @@ public static class PlayerEconomyStorage { version = 1, lastUpdatedUtcTicks = DateTime.UtcNow.Ticks, - coins = 0, + coins = 999999, material = 0 }; } diff --git a/Assets/scripts/_runtimecache/PlayerSkillService.cs b/Assets/scripts/_runtimecache/PlayerSkillService.cs new file mode 100644 index 00000000..e6c65bbd --- /dev/null +++ b/Assets/scripts/_runtimecache/PlayerSkillService.cs @@ -0,0 +1,652 @@ +using System; +using System.Collections.Generic; +using Bansonic; +using UnityEngine; +using UnityEngine.SceneManagement; + +[Serializable] +public class PlayerSkillSaveData +{ + public int selectedSkillIndex = -1; + public int postMatchRewardCounter = 0; + public int skillSwitchCooldownRemainingMatches = 0; +} + +public sealed class PlayerSkillService : MonoBehaviour +{ + private const string SaveCategory = "player_skills"; + private const string SaveKey = "runtime"; + private const string SkillAssetEditorPath = "Assets/playerInfoDisplay/uls/ulsSO.asset"; + private const int MemoryBuySkillIndex = 1; + private const int MemorySellSkillIndex = 2; + private const int PostMatchEquipmentSkillIndex = 4; + private const int SmeltDiscountSkillIndex = 5; + private const int ScoreToMaterialSkillIndex = 6; + private const int RevealLockedIdolSkillsSkillIndex = 7; + private const int SpendRefundSkillIndex = 8; + private const int ScoreToCoinsSkillIndex = 9; + private const int CameraAngleSkillIndex = 10; + private const int MemoryBuyStoreItemId = 799001; + private const int MemorySellStoreItemId = 799002; + private const int RandomMemoryStoreItemId = 78141; + private const float SpendRefundPerOwnedHero = 0.005f; + private const float MaxSpendRefundRate = 0.05f; + + public static PlayerSkillService Instance { get; private set; } + + private bool initialized; + private PlayerSkillSaveData saveData; + private userLevel_skills_SO registeredSkillAsset; + private storeItemSO cachedRandomMemoryRewardItem; + + [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] + private static void Bootstrap() + { + EnsureInstance(); + } + + public static PlayerSkillService EnsureInstance() + { + if (Instance != null) + { + return Instance; + } + + GameObject host = new GameObject("__runtime_player_skill_bridge"); + host.hideFlags = HideFlags.HideInHierarchy | HideFlags.HideInInspector; + DontDestroyOnLoad(host); + Instance = host.AddComponent(); + return Instance; + } + + public static void RegisterSkillAsset(userLevel_skills_SO skillAsset) + { + EnsureInstance().RegisterAssetInternal(skillAsset); + } + + public static bool IsSkillEnabled(int skillIndex) + { + return EnsureInstance().IsSkillEnabledInternal(skillIndex); + } + + public static int GetSelectedSkillIndex() + { + return EnsureInstance().GetSelectedSkillIndexInternal(); + } + + public static int GetSkillSwitchCooldownRemainingMatches() + { + return EnsureInstance().GetSkillSwitchCooldownRemainingMatchesInternal(); + } + + public static void ConfirmSkillSelection(userLevel_skills_SO skillAsset, int selectedIndex) + { + EnsureInstance().ConfirmSkillSelectionInternal(skillAsset, selectedIndex); + } + + public static int ModifySmeltCoinCost(int baseCost) + { + if (!IsSkillEnabled(SmeltDiscountSkillIndex)) + { + return Mathf.Max(0, baseCost); + } + + return Mathf.CeilToInt(Mathf.Max(0, baseCost) * 0.5f); + } + + public static int GetCoinRefundAmount(int spentCoins) + { + return EnsureInstance().GetRefundAmount(spentCoins); + } + + public static int GetMaterialRefundAmount(int spentMaterial) + { + return EnsureInstance().GetRefundAmount(spentMaterial); + } + + public static void NotifySettlementCompleted(int idolScore) + { + EnsureInstance().HandleSettlementCompletedInternal(idolScore); + } + + public static void AppendDynamicStoreItems(List target, Sprite coinSprite, Sprite materialSprite) + { + EnsureInstance().AppendDynamicStoreItemsInternal(target, coinSprite, materialSprite); + } + + public static bool IsPlayerSkillStoreItem(storeItemSO item) + { + return item != null && (item.itemID == MemoryBuyStoreItemId || item.itemID == MemorySellStoreItemId); + } + + public static bool TryPurchasePlayerSkillStoreItem(storeItemSO item, int amount, out string failureMessage, out gItemGet.ItemEntry rewardEntry) + { + return EnsureInstance().TryPurchasePlayerSkillStoreItemInternal(item, amount, out failureMessage, out rewardEntry); + } + + public static void ClearPersistentState() + { + EnsureInstance().ClearPersistentStateInternal(); + } + + private void Awake() + { + if (Instance != null && Instance != this) + { + Destroy(gameObject); + return; + } + + Instance = this; + DontDestroyOnLoad(gameObject); + InitializeIfNeeded(); + } + + private void OnEnable() + { + SceneManager.sceneLoaded += HandleSceneLoaded; + } + + private void OnDisable() + { + SceneManager.sceneLoaded -= HandleSceneLoaded; + } + + private void OnApplicationPause(bool pauseStatus) + { + if (pauseStatus) + { + SaveNow(); + } + } + + private void OnApplicationQuit() + { + SaveNow(); + } + + private void InitializeIfNeeded() + { + if (initialized) + { + return; + } + + initialized = true; + if (!SecureSaveVault.TryLoadJson(SaveCategory, SaveKey, out saveData) || saveData == null) + { + saveData = new PlayerSkillSaveData(); + } + + ResolveSkillAssetIfNeeded(); + SyncSelectionFromAsset(); + ApplySceneBindings(); + } + + private void RegisterAssetInternal(userLevel_skills_SO skillAsset) + { + InitializeIfNeeded(); + + if (skillAsset == null) + { + return; + } + + registeredSkillAsset = skillAsset; + SyncSelectionFromAsset(); + ApplySceneBindings(); + } + + private bool IsSkillEnabledInternal(int skillIndex) + { + InitializeIfNeeded(); + ResolveSkillAssetIfNeeded(); + SyncSelectionFromAsset(); + return saveData != null && saveData.selectedSkillIndex == skillIndex; + } + + private int GetSelectedSkillIndexInternal() + { + InitializeIfNeeded(); + ResolveSkillAssetIfNeeded(); + SyncSelectionFromAsset(); + return saveData != null ? saveData.selectedSkillIndex : -1; + } + + private int GetSkillSwitchCooldownRemainingMatchesInternal() + { + InitializeIfNeeded(); + return saveData != null ? Mathf.Max(0, saveData.skillSwitchCooldownRemainingMatches) : 0; + } + + private int GetRefundAmount(int spendAmount) + { + if (spendAmount <= 0 || !IsSkillEnabledInternal(SpendRefundSkillIndex)) + { + return 0; + } + + float refundRate = Mathf.Min(GetOwnedHeroCount() * SpendRefundPerOwnedHero, MaxSpendRefundRate); + if (refundRate <= 0f) + { + return 0; + } + + return Mathf.FloorToInt(spendAmount * refundRate); + } + + private void HandleSettlementCompletedInternal(int idolScore) + { + InitializeIfNeeded(); + ResolveSkillAssetIfNeeded(); + SyncSelectionFromAsset(); + + if (saveData.skillSwitchCooldownRemainingMatches > 0) + { + saveData.skillSwitchCooldownRemainingMatches = Mathf.Max(0, saveData.skillSwitchCooldownRemainingMatches - 1); + } + + List grantedEntries = new List(); + + if (IsSkillEnabledInternal(PostMatchEquipmentSkillIndex)) + { + saveData.postMatchRewardCounter = Mathf.Max(0, saveData.postMatchRewardCounter) + 1; + if (saveData.postMatchRewardCounter >= 10) + { + saveData.postMatchRewardCounter = 0; + equipmentSO generated = GrantRandomMemoryFromConfiguredSource(); + if (generated != null) + { + grantedEntries.Add(gItemGet.FromEquipment(generated, 1)); + } + } + } + + if (idolScore > 0 && IsSkillEnabledInternal(ScoreToMaterialSkillIndex)) + { + int grantedMaterial = Mathf.FloorToInt(idolScore * 0.001f); + if (grantedMaterial > 0) + { + PlayerEconomyLedger.EnsureInstance().AddMaterial(grantedMaterial); + grantedEntries.Add(gItemGet.Create("\u8bb0\u5fc6\u788e\u7247", null, grantedMaterial, ItemRarity.Uncommon)); + } + } + + if (idolScore > 0 && IsSkillEnabledInternal(ScoreToCoinsSkillIndex)) + { + int grantedCoins = Mathf.FloorToInt(idolScore * 0.002f); + if (grantedCoins > 0) + { + PlayerEconomyLedger.EnsureInstance().AddCoins(grantedCoins); + grantedEntries.Add(gItemGet.Create("\u91d1\u5e01", null, grantedCoins, new Color32(240, 196, 74, 255))); + } + } + + SaveNow(); + + if (grantedEntries.Count > 0) + { + gItemGet.display(grantedEntries); + } + } + + private void AppendDynamicStoreItemsInternal(List target, Sprite coinSprite, Sprite materialSprite) + { + InitializeIfNeeded(); + ResolveSkillAssetIfNeeded(); + SyncSelectionFromAsset(); + + if (target == null) + { + return; + } + + if (IsSkillEnabledInternal(MemoryBuySkillIndex)) + { + target.Add(CreateMemoryBuyStoreItem(materialSprite)); + } + + if (IsSkillEnabledInternal(MemorySellSkillIndex)) + { + target.Add(CreateMemorySellStoreItem(coinSprite)); + } + } + + private bool TryPurchasePlayerSkillStoreItemInternal(storeItemSO item, int amount, out string failureMessage, out gItemGet.ItemEntry rewardEntry) + { + failureMessage = string.Empty; + rewardEntry = default; + + if (item == null) + { + failureMessage = "\u5546\u54c1\u6570\u636e\u4e22\u5931"; + return false; + } + + int purchaseAmount = Mathf.Max(1, amount); + if (item.itemID == MemoryBuyStoreItemId) + { + int totalCost = purchaseAmount * 10; + if (!PlayerEconomyLedger.EnsureInstance().TrySpendCoins(totalCost)) + { + failureMessage = "\u8d27\u5e01\u4e0d\u8db3"; + return false; + } + + PlayerEconomyLedger.EnsureInstance().AddMaterial(purchaseAmount); + rewardEntry = gItemGet.Create("\u8bb0\u5fc6\u788e\u7247", item.itemIcon, purchaseAmount, ItemRarity.Uncommon); + return true; + } + + if (item.itemID == MemorySellStoreItemId) + { + if (!PlayerEconomyLedger.EnsureInstance().TrySpendMaterial(purchaseAmount)) + { + failureMessage = "\u8bb0\u5fc6\u788e\u7247\u4e0d\u8db3"; + return false; + } + + int grantedCoins = purchaseAmount * 4; + PlayerEconomyLedger.EnsureInstance().AddCoins(grantedCoins); + rewardEntry = gItemGet.Create("\u91d1\u5e01", item.itemIcon, grantedCoins, new Color32(240, 196, 74, 255)); + return true; + } + + failureMessage = "\u5f53\u524d\u672a\u914d\u7f6e\u53d1\u653e\u903b\u8f91"; + return false; + } + + private void ConfirmSkillSelectionInternal(userLevel_skills_SO skillAsset, int selectedIndex) + { + InitializeIfNeeded(); + if (skillAsset == null || skillAsset.skills == null || selectedIndex < 0 || selectedIndex >= skillAsset.skills.Count) + { + return; + } + + registeredSkillAsset = skillAsset; + + for (int i = 0; i < skillAsset.skills.Count; i++) + { + userLevel_skills_SO.UserLevelSkillEntry entry = skillAsset.skills[i]; + if (entry == null) + { + continue; + } + + entry.isEnabled = (i == selectedIndex); + } + + if (saveData.selectedSkillIndex != selectedIndex) + { + saveData.postMatchRewardCounter = 0; + saveData.skillSwitchCooldownRemainingMatches = 3; + } + + saveData.selectedSkillIndex = selectedIndex; + +#if UNITY_EDITOR + if (!Application.isPlaying) + { + UnityEditor.EditorUtility.SetDirty(skillAsset); + } +#endif + + SaveNow(); + ApplySceneBindings(); + } + + private void ClearPersistentStateInternal() + { + saveData = new PlayerSkillSaveData(); + SecureSaveVault.Delete(SaveCategory, SaveKey); + ApplySceneBindings(); + } + + private void HandleSceneLoaded(Scene scene, LoadSceneMode mode) + { + ApplySceneBindings(); + } + + private void ApplySceneBindings() + { + bool revealLockedSkills = IsSkillEnabledInternal(RevealLockedIdolSkillsSkillIndex); + + idolSkillsHub[] hubs = Resources.FindObjectsOfTypeAll(); + for (int i = 0; i < hubs.Length; i++) + { + idolSkillsHub hub = hubs[i]; + if (hub == null || !IsSceneInstance(hub)) + { + continue; + } + + if (hub.display_ungotten != revealLockedSkills) + { + hub.display_ungotten = revealLockedSkills; + if (hub.gameObject.activeInHierarchy) + { + hub.Rebuild(); + } + } + } + + storeSystem[] stores = Resources.FindObjectsOfTypeAll(); + for (int i = 0; i < stores.Length; i++) + { + if (stores[i] != null && IsSceneInstance(stores[i])) + { + stores[i].RefreshPlayerSkillItems(); + } + } + + equipSmelt[] smelters = Resources.FindObjectsOfTypeAll(); + for (int i = 0; i < smelters.Length; i++) + { + if (smelters[i] != null && IsSceneInstance(smelters[i])) + { + smelters[i].RefreshPlayerSkillAdjustedUi(); + } + } + + effectEventController.RefreshPlayerSkillCameraOffset(); + } + + private void ResolveSkillAssetIfNeeded() + { + if (registeredSkillAsset != null) + { + return; + } + + uLevel_skills[] skillPanels = Resources.FindObjectsOfTypeAll(); + for (int i = 0; i < skillPanels.Length; i++) + { + if (skillPanels[i] != null && skillPanels[i].ulsSO != null) + { + registeredSkillAsset = skillPanels[i].ulsSO; + return; + } + } + + userLevel_skills_SO[] loadedAssets = Resources.FindObjectsOfTypeAll(); + for (int i = 0; i < loadedAssets.Length; i++) + { + if (loadedAssets[i] != null) + { + registeredSkillAsset = loadedAssets[i]; + return; + } + } + +#if UNITY_EDITOR + registeredSkillAsset = UnityEditor.AssetDatabase.LoadAssetAtPath(SkillAssetEditorPath); +#endif + } + + private void SyncSelectionFromAsset() + { + if (saveData == null || registeredSkillAsset == null || registeredSkillAsset.skills == null || registeredSkillAsset.skills.Count == 0) + { + return; + } + + int enabledIndex = -1; + for (int i = 0; i < registeredSkillAsset.skills.Count; i++) + { + userLevel_skills_SO.UserLevelSkillEntry entry = registeredSkillAsset.skills[i]; + if (entry != null && entry.isEnabled) + { + enabledIndex = i; + break; + } + } + + if (enabledIndex == saveData.selectedSkillIndex) + { + return; + } + + if (saveData.selectedSkillIndex >= 0) + { + saveData.postMatchRewardCounter = 0; + } + + saveData.selectedSkillIndex = enabledIndex; + SaveNow(); + } + + private storeItemSO CreateMemoryBuyStoreItem(Sprite materialSprite) + { + storeItemSO item = ScriptableObject.CreateInstance(); + item.hideFlags = HideFlags.DontSave; + item.itemID = MemoryBuyStoreItemId; + item.itemName = "1\u8bb0\u5fc6\u788e\u7247"; + item.itemIcon = materialSprite; + item.itemRarity = ItemRarity.Uncommon; + item.itemSinglePurchaseQty = 1; + item.itemPurchaseQuota = -1; + item.itemDescription = "\u82b1\u8d3910\u91d1\u5e01\u8d2d\u4e701\u4e2a\u8bb0\u5fc6\u788e\u7247\u3002"; + item.itemDetailedDescription = "\u73a9\u5bb6\u6280\u80fd\u201c\u8bb0\u5fc6\u8d2d\u4e70\u8ba1\u5212\u201d\u751f\u6548\u4e2d\u3002\u82b1\u8d3910\u91d1\u5e01\u8d2d\u4e701\u4e2a\u8bb0\u5fc6\u788e\u7247\u3002"; + item.isOnShelf = true; + item.canbepurchased = true; + item.itemType = storeItemSO.ItemType.consumable; + item.costRequirements = new List + { + new storeItemSO.CostRequirement + { + currencyType = storeItemSO.CurrencyType.coins, + amount = 10 + } + }; + item.unlockRequirements = new List(); + return item; + } + + private storeItemSO CreateMemorySellStoreItem(Sprite coinSprite) + { + storeItemSO item = ScriptableObject.CreateInstance(); + item.hideFlags = HideFlags.DontSave; + item.itemID = MemorySellStoreItemId; + item.itemName = "4\u91d1\u5e01"; + item.itemIcon = coinSprite; + item.itemRarity = ItemRarity.Common; + item.itemSinglePurchaseQty = 1; + item.itemPurchaseQuota = -1; + item.itemDescription = "\u6d88\u80171\u4e2a\u8bb0\u5fc6\u788e\u7247\uff0c\u6362\u53d64\u91d1\u5e01\u3002"; + item.itemDetailedDescription = "\u73a9\u5bb6\u6280\u80fd\u201c\u8bb0\u5fc6\u5f52\u8fd8\u8ba1\u5212\u201d\u751f\u6548\u4e2d\u3002\u6d88\u80171\u4e2a\u8bb0\u5fc6\u788e\u7247\uff0c\u6362\u53d64\u91d1\u5e01\u3002"; + item.isOnShelf = true; + item.canbepurchased = true; + item.itemType = storeItemSO.ItemType.consumable; + item.costRequirements = new List + { + new storeItemSO.CostRequirement + { + currencyType = storeItemSO.CurrencyType.material, + amount = 1 + } + }; + item.unlockRequirements = new List(); + return item; + } + + private equipmentSO GrantRandomMemoryFromConfiguredSource() + { + storeItemSO randomMemoryItem = ResolveRandomMemoryRewardItem(); + if (randomMemoryItem == null || randomMemoryItem.associatedSelectableEquipmentRewardSource == null) + { + return null; + } + + smeltStageRewardSO rewardSource = randomMemoryItem.associatedSelectableEquipmentRewardSource; + int rewardIndex = Mathf.Max(0, randomMemoryItem.associatedSelectableEquipmentRewardIndex); + if (rewardSource.rewardRequirements == null || rewardIndex >= rewardSource.rewardRequirements.Length) + { + return null; + } + + return equipmentGenerator.GenerateFromSmeltReward(rewardSource, rewardSource.rewardRequirements[rewardIndex]); + } + + private storeItemSO ResolveRandomMemoryRewardItem() + { + if (cachedRandomMemoryRewardItem != null) + { + return cachedRandomMemoryRewardItem; + } + + storeItemSO[] items = Resources.LoadAll("so/storeSO"); + for (int i = 0; i < items.Length; i++) + { + if (items[i] != null && items[i].itemID == RandomMemoryStoreItemId) + { + cachedRandomMemoryRewardItem = items[i]; + break; + } + } + + return cachedRandomMemoryRewardItem; + } + + private int GetOwnedHeroCount() + { + HashSet heroIds = new HashSet(); + AllyHero_SO[] heroes = Resources.LoadAll(string.Empty); + if (heroes == null) + { + return 0; + } + + for (int i = 0; i < heroes.Length; i++) + { + AllyHero_SO hero = heroes[i]; + if (hero != null && hero.isUnlocked) + { + heroIds.Add(hero.ally_heroID); + } + } + + return heroIds.Count; + } + + private bool IsSceneInstance(Component component) + { + if (component == null || component.gameObject == null) + { + return false; + } + + Scene scene = component.gameObject.scene; + return scene.IsValid() && scene.isLoaded; + } + + private void SaveNow() + { + if (!initialized) + { + return; + } + + SecureSaveVault.SaveJson(SaveCategory, SaveKey, saveData); + } +} diff --git a/Assets/scripts/_runtimecache/PlayerSkillService.cs.meta b/Assets/scripts/_runtimecache/PlayerSkillService.cs.meta new file mode 100644 index 00000000..39df9420 --- /dev/null +++ b/Assets/scripts/_runtimecache/PlayerSkillService.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 3fc9125cbd0b7134ea8ac541779cb715 \ No newline at end of file diff --git a/Assets/scripts/dailyTask/dailyTaskManager.cs b/Assets/scripts/dailyTask/dailyTaskManager.cs index fb4807ad..7546020e 100644 --- a/Assets/scripts/dailyTask/dailyTaskManager.cs +++ b/Assets/scripts/dailyTask/dailyTaskManager.cs @@ -38,6 +38,7 @@ public class dailyTaskManager : MonoBehaviour private readonly List spawnedTaskItems = new List(); private readonly Dictionary rewardSpriteByItemId = new Dictionary(); + private readonly Dictionary rewardStoreItemByItemId = new Dictionary(); private void Start() { @@ -157,6 +158,7 @@ public class dailyTaskManager : MonoBehaviour private void OnSingleRewardClicked(string taskID) { + var rewardEntry = BuildRewardEntryForTask(taskID); string failureMessage; if (!DailyTaskService.EnsureInstance().TryClaimReward(taskID, playerData, out failureMessage)) { @@ -168,15 +170,57 @@ public class dailyTaskManager : MonoBehaviour return; } + if (rewardEntry.HasValue) + { + gItemGet.display(rewardEntry.Value); + } + RefreshTaskUi(); } private void OnOneKeyRewardClicked() { - string failureMessage; - int claimedCount = DailyTaskService.EnsureInstance().ClaimAllAvailableRewards(playerData, out failureMessage); + var taskService = DailyTaskService.EnsureInstance(); + var tasks = taskService.GetActiveTaskViews(); + var grantedEntries = new List(); + string failureMessage = string.Empty; + int claimedCount = 0; + + for (int i = 0; i < tasks.Count; i++) + { + var taskView = tasks[i]; + if (taskView == null || taskView.runtimeEntry == null || taskView.definition == null) + { + continue; + } + + if (!taskView.runtimeEntry.isCompleted || taskView.runtimeEntry.isClaimed) + { + continue; + } + + string claimError; + if (!taskService.TryClaimReward(taskView.runtimeEntry.taskID, playerData, out claimError)) + { + if (claimedCount <= 0 && string.IsNullOrEmpty(failureMessage)) + { + failureMessage = claimError; + } + + continue; + } + + claimedCount += 1; + grantedEntries.Add(BuildRewardEntry(taskView.definition)); + } + if (claimedCount <= 0) { + if (string.IsNullOrEmpty(failureMessage)) + { + failureMessage = "暂无可领取奖励"; + } + if (!string.IsNullOrEmpty(failureMessage)) { gNotice.warning.display(failureMessage); @@ -185,6 +229,11 @@ public class dailyTaskManager : MonoBehaviour return; } + if (grantedEntries.Count > 0) + { + gItemGet.display(grantedEntries); + } + RefreshTaskUi(); } @@ -274,17 +323,23 @@ public class dailyTaskManager : MonoBehaviour private void CacheRewardSpritesFromStoreItems() { rewardSpriteByItemId.Clear(); + rewardStoreItemByItemId.Clear(); var rewardStoreItems = Resources.LoadAll("so/storeSO"); for (int i = 0; i < rewardStoreItems.Length; i++) { var itemSO = rewardStoreItems[i]; - if (itemSO == null || itemSO.itemIcon == null) + if (itemSO == null) { continue; } - rewardSpriteByItemId[itemSO.itemID] = itemSO.itemIcon; + if (itemSO.itemIcon != null) + { + rewardSpriteByItemId[itemSO.itemID] = itemSO.itemIcon; + } + + rewardStoreItemByItemId[itemSO.itemID] = itemSO; } } @@ -299,6 +354,80 @@ public class dailyTaskManager : MonoBehaviour return rewardSpriteByItemId.TryGetValue(itemId, out sprite) ? sprite : null; } + private gItemGet.ItemEntry? BuildRewardEntryForTask(string taskID) + { + if (string.IsNullOrWhiteSpace(taskID)) + { + return null; + } + + var tasks = DailyTaskService.EnsureInstance().GetActiveTaskViews(); + for (int i = 0; i < tasks.Count; i++) + { + var taskView = tasks[i]; + if (taskView == null || taskView.runtimeEntry == null || taskView.definition == null) + { + continue; + } + + if (string.Equals(taskView.runtimeEntry.taskID, taskID, System.StringComparison.Ordinal)) + { + return BuildRewardEntry(taskView.definition); + } + } + + return null; + } + + private gItemGet.ItemEntry BuildRewardEntry(userTasksPool.TaskDefinition definition) + { + if (definition == null) + { + return gItemGet.Create("未知奖励", null, 1, ItemRarity.None); + } + + switch (definition.rewardType) + { + case userTasksPool.RewardType.coins: + return gItemGet.Create("Coins", coinRewardSprite, Mathf.Max(1, definition.rewardAmount), ItemRarity.Common); + + case userTasksPool.RewardType.expBottle: + { + int itemId = GetExpBottleRewardItemId(definition.rewardExpBottleKind); + storeItemSO itemSO; + if (rewardStoreItemByItemId.TryGetValue(itemId, out itemSO) && itemSO != null) + { + return gItemGet.FromStoreItem(itemSO, Mathf.Max(1, definition.rewardAmount)); + } + + return gItemGet.Create( + ExpBottleCatalog.GetDisplayName(definition.rewardExpBottleKind), + GetRewardSpriteByItemId(itemId), + Mathf.Max(1, definition.rewardAmount), + ItemRarity.None); + } + + case userTasksPool.RewardType.dushMaterial: + { + int itemId = GetDushMaterialRewardItemId(definition.rewardDushMaterialKind); + storeItemSO itemSO; + if (rewardStoreItemByItemId.TryGetValue(itemId, out itemSO) && itemSO != null) + { + return gItemGet.FromStoreItem(itemSO, Mathf.Max(1, definition.rewardAmount)); + } + + return gItemGet.Create( + DushMaterialCatalog.GetDisplayName(definition.rewardDushMaterialKind), + GetRewardSpriteByItemId(itemId), + Mathf.Max(1, definition.rewardAmount), + ItemRarity.None); + } + + default: + return gItemGet.Create("未知奖励", null, Mathf.Max(1, definition.rewardAmount), ItemRarity.None); + } + } + private static int GetExpBottleRewardItemId(ExpBottleKind kind) { switch (kind) diff --git a/Assets/scripts/gamePlay_gameplay/Animation_GenerateJudgementSituationPrefab.cs b/Assets/scripts/gamePlay_gameplay/Animation_GenerateJudgementSituationPrefab.cs index ca61286e..b59993f3 100644 --- a/Assets/scripts/gamePlay_gameplay/Animation_GenerateJudgementSituationPrefab.cs +++ b/Assets/scripts/gamePlay_gameplay/Animation_GenerateJudgementSituationPrefab.cs @@ -3,6 +3,11 @@ using System.Collections; public class Animation_GenerateJudgementSituationPrefab : MonoBehaviour { + private sealed class PooledJudgeTag : MonoBehaviour + { + public GameObject prefabSource; + } + public static Animation_GenerateJudgementSituationPrefab Instance; [Header("Inspector")] @@ -42,6 +47,9 @@ public class Animation_GenerateJudgementSituationPrefab : MonoBehaviour // Track last scene to detect scene changes private int lastSceneIndex = -1; + private Coroutine prewarmJudgeCoroutine; + private readonly System.Collections.Generic.Dictionary> judgePools + = new System.Collections.Generic.Dictionary>(); private void Awake() { @@ -147,7 +155,10 @@ public class Animation_GenerateJudgementSituationPrefab : MonoBehaviour if (JudgeManager.IsDebugEnabled) Debug.Log($"[Animation_Generate] Spawning judge prefab: color={color}, result={judgeResult}, prefab={prefabToUse.name}"); - GameObject instance = Instantiate(prefabToUse, spawnPoint); + GameObject instance = GetPooledJudge(prefabToUse, spawnPoint); + if (instance == null) + return; + instance.transform.localPosition = Vector3.zero; // Documentation text normalized. @@ -159,6 +170,52 @@ public class Animation_GenerateJudgementSituationPrefab : MonoBehaviour StartCoroutine(AnimateSprite(instance)); } + public void PrewarmJudgePrefabs(int perPrefab = 1) + { + if (!Application.isPlaying) + return; + + if (prewarmJudgeCoroutine != null) + { + StopCoroutine(prewarmJudgeCoroutine); + } + + prewarmJudgeCoroutine = StartCoroutine(PrewarmJudgePrefabsRoutine(Mathf.Max(1, perPrefab))); + } + + public IEnumerator PrewarmJudgePrefabsRoutine(int perPrefab = 1) + { + GameObject[] prefabs = + { + perfect_judge_prefab, + great_judge_prefab, + good_judge_prefab, + miss_judge_prefab + }; + + int count = Mathf.Max(1, perPrefab); + foreach (GameObject prefab in prefabs) + { + if (prefab == null) + continue; + + for (int i = 0; i < count; i++) + { + GameObject instance = null; + try + { + instance = CreatePooledJudge(prefab); + ReturnJudgeToPool(instance); + } + catch { } + + yield return null; + } + } + + prewarmJudgeCoroutine = null; + } + private IEnumerator AnimateSprite(GameObject obj) { if (obj == null) yield break; @@ -232,7 +289,76 @@ public class Animation_GenerateJudgementSituationPrefab : MonoBehaviour // Documentation text normalized. - if (obj != null) Destroy(obj); + if (obj != null) ReturnJudgeToPool(obj); + } + + private GameObject GetPooledJudge(GameObject prefab, Transform parent) + { + if (prefab == null || parent == null) + return null; + + if (!judgePools.TryGetValue(prefab, out var pool)) + { + pool = new System.Collections.Generic.Stack(); + judgePools[prefab] = pool; + } + + GameObject instance = null; + while (pool.Count > 0 && instance == null) + { + instance = pool.Pop(); + } + + if (instance == null) + { + instance = CreatePooledJudge(prefab); + } + + if (instance == null) + return null; + + instance.transform.SetParent(parent, false); + instance.SetActive(true); + return instance; + } + + private GameObject CreatePooledJudge(GameObject prefab) + { + if (prefab == null) + return null; + + GameObject instance = Instantiate(prefab, transform); + var tag = instance.GetComponent(); + if (tag == null) + tag = instance.AddComponent(); + tag.prefabSource = prefab; + instance.SetActive(false); + return instance; + } + + private void ReturnJudgeToPool(GameObject instance) + { + if (instance == null) + return; + + var tag = instance.GetComponent(); + if (tag == null || tag.prefabSource == null) + { + Destroy(instance); + return; + } + + if (!judgePools.TryGetValue(tag.prefabSource, out var pool)) + { + pool = new System.Collections.Generic.Stack(); + judgePools[tag.prefabSource] = pool; + } + + instance.transform.SetParent(transform, false); + instance.transform.localPosition = new Vector3(99999f, 99999f, 0f); + instance.transform.localRotation = Quaternion.identity; + instance.SetActive(false); + pool.Push(instance); } private Transform GetSpawnPoint(string color) diff --git a/Assets/scripts/gamePlay_gameplay/Beatmap.cs b/Assets/scripts/gamePlay_gameplay/Beatmap.cs index 145e0f98..1c146bca 100644 --- a/Assets/scripts/gamePlay_gameplay/Beatmap.cs +++ b/Assets/scripts/gamePlay_gameplay/Beatmap.cs @@ -9,6 +9,7 @@ public class NoteData public string color; // Documentation text normalized. public string type; // Documentation text normalized. public float length; // Documentation text normalized. + public string noteFunction; // New fields for judgement recording // judgeOffsetMs: signed offset in milliseconds recorded at judgement time diff --git a/Assets/scripts/gamePlay_gameplay/GameManager.cs b/Assets/scripts/gamePlay_gameplay/GameManager.cs index 5d2ccd71..927a572c 100644 --- a/Assets/scripts/gamePlay_gameplay/GameManager.cs +++ b/Assets/scripts/gamePlay_gameplay/GameManager.cs @@ -326,6 +326,9 @@ public class GameManager : MonoBehaviour { Debug.Log("GameManager Start() initialized"); + // Move first-hit one-time setup cost into scene load instead of the first judged note. + StartCoroutine(PrewarmGameplayFirstHitPath()); + // --- Initialize Statistics --- currentSong = BeatmapManager.pendingSongData ?? SongDataHolder.SelectedSongData; if (currentSong != null && !GameConfig.autoPlayEnabled) @@ -489,6 +492,34 @@ public class GameManager : MonoBehaviour } } + private IEnumerator PrewarmGameplayFirstHitPath() + { + yield return null; + + try + { + Note.PrewarmRuntimeCaches(); + HoldNote.PrewarmRuntimeCaches(); + + var judgeFx = Animation_GenerateJudgementSituationPrefab.Instance + ?? FindAnyObjectByType(); + judgeFx?.PrewarmJudgePrefabs(1); + + var fxEvent = effectEventController.Instance ?? FindAnyObjectByType(); + if (fxEvent != null && fxEvent.isActiveAndEnabled) + { + // Cache target and pre-create SmoothShake via OnEnable/Awake path already present. + } + + var globalFx = globalNoteEffect.Instance ?? FindAnyObjectByType(); + globalFx?.PrewarmRuntime(); + } + catch (System.Exception ex) + { + Debug.LogWarning($"[GameManager] Gameplay prewarm failed: {ex}"); + } + } + private void Update() { // Detect Space or yellow note key to request start (only before gameplay starts) diff --git a/Assets/scripts/gamePlay_gameplay/HoldNote.cs b/Assets/scripts/gamePlay_gameplay/HoldNote.cs index a858a952..e2c61c80 100644 --- a/Assets/scripts/gamePlay_gameplay/HoldNote.cs +++ b/Assets/scripts/gamePlay_gameplay/HoldNote.cs @@ -99,6 +99,18 @@ public class HoldNote : BaseNote return beatmapManagerCache; } + public static void PrewarmRuntimeCaches() + { + GetBeatmapManagerCached(); + if (allyCache == null || allyCache.Length < 10) + allyCache = new AllyCombatant[10]; + + for (int i = 0; i < 5; i++) + { + GetAllyForTrackCached(i); + } + } + private static float JudgeToPmMultiplier(string judgeResult) { switch (judgeResult) @@ -326,9 +338,10 @@ public class HoldNote : BaseNote } private float cachedTravelTime = 1.0f; // Cached travel time for distance optimization + private bool isSyncNote; public void Setup(int id, int trackIndex, float speed, float time, float delay, - bool isEnd, float scheduledEnd, string color, KeyCode key, string type, float travelTimeSeconds, NoteJudgeConfig judgeConfig, NoteData noteData) + bool isEnd, float scheduledEnd, string color, KeyCode key, string type, float travelTimeSeconds, NoteJudgeConfig judgeConfig, NoteData noteData, bool isSync = false) { this.id = id; // Ensure singletons are up to date if they were re-initialized (e.g. on scene reload) @@ -347,6 +360,7 @@ public class HoldNote : BaseNote this.key = key; this.type = type; this.judgeConfig = judgeConfig; + this.isSyncNote = isSync; this.noteID = id.ToString(); this.keyToPress = key; @@ -659,6 +673,13 @@ public class HoldNote : BaseNote InputManager.Instance?.ShowJudgeResult(trackIndex, result); teamUIController.Instance?.OnJudgeResult(result); JudgeSoundManager.Instance?.PlayJudgeSound(result); + + if (isSyncNote) + { + effectEventController.TryTriggerMultiNoteShake(); + } + + globalNoteEffect.TryTrigger(noteData != null ? noteData.noteFunction : null); } private void OnTriggerEnter2D(Collider2D collision) @@ -975,6 +996,16 @@ public class HoldNote : BaseNote { ScheduleReturnToPool(0.2f); } + + if (segment == NoteSegment.Start && isSyncNote && result != "Miss") + { + effectEventController.TryTriggerMultiNoteShake(); + } + + if (segment == NoteSegment.Start && result != "Miss") + { + globalNoteEffect.TryTrigger(noteData != null ? noteData.noteFunction : null); + } } private IEnumerator DelayedReturn() diff --git a/Assets/scripts/gamePlay_gameplay/Note.cs b/Assets/scripts/gamePlay_gameplay/Note.cs index 85f45f31..fb9aaec8 100644 --- a/Assets/scripts/gamePlay_gameplay/Note.cs +++ b/Assets/scripts/gamePlay_gameplay/Note.cs @@ -11,6 +11,7 @@ public class Note : BaseNote private bool hasLock = false; // track whether we hold the track lock private NoteData noteData; + private bool isSyncNote; [Header("Inspector")] public NoteJudgeConfig judgeConfig; // Documentation text normalized. @@ -42,6 +43,18 @@ public class Note : BaseNote return beatmapManagerCache; } + public static void PrewarmRuntimeCaches() + { + GetBeatmapManagerCached(); + if (allyCache == null || allyCache.Length < 10) + allyCache = new AllyCombatant[10]; + + for (int i = 0; i < 5; i++) + { + GetAllyForTrackCached(i); + } + } + private static float JudgeToPmMultiplier(string judgeResult) { switch (judgeResult) @@ -150,7 +163,7 @@ public class Note : BaseNote controller = GetComponent(); } - public void Setup(KeyCode key, int trackIndex, float speed, float hitTime, string color, NoteJudgeConfig judgeConfig, NoteData data) + public void Setup(KeyCode key, int trackIndex, float speed, float hitTime, string color, NoteJudgeConfig judgeConfig, NoteData data, bool isSync = false) { keyToPress = key; noteColor = color; @@ -161,6 +174,7 @@ public class Note : BaseNote hasLock = false; this.judgeConfig = judgeConfig; this.noteData = data; + this.isSyncNote = isSync; // Set miss deadline: hitTime + missRange (the latest time to judge before auto-miss) float missRange = (judgeConfig?.missRange ?? 0.5f); @@ -279,6 +293,13 @@ public class Note : BaseNote try { SkillBuilder.Instance?.NotifyNoteHit(TrackIndex, judgeResult, SkillDefinition.NoteTypeTrigger.Tap); } catch { } LogTapJudge(judgeResult, 0f, false, true, pressTime); + if (isSyncNote) + { + effectEventController.TryTriggerMultiNoteShake(); + } + + globalNoteEffect.TryTrigger(noteData != null ? noteData.noteFunction : null); + Judge(); } @@ -437,6 +458,13 @@ public class Note : BaseNote try { SkillBuilder.Instance?.NotifyNoteHit(TrackIndex, judgeResult, SkillDefinition.NoteTypeTrigger.Tap); } catch { } LogTapJudge(judgeResult, rawOffsetMs, rewrittenToPerfect, false, pressTime); + + if (isSyncNote && judgeResult != "Miss") + { + effectEventController.TryTriggerMultiNoteShake(); + } + + globalNoteEffect.TryTrigger(noteData != null ? noteData.noteFunction : null); } Judge(); diff --git a/Assets/scripts/gamePlay_gameplay/NoteSpawner.cs b/Assets/scripts/gamePlay_gameplay/NoteSpawner.cs index 1707f8bd..f1d4c3c3 100644 --- a/Assets/scripts/gamePlay_gameplay/NoteSpawner.cs +++ b/Assets/scripts/gamePlay_gameplay/NoteSpawner.cs @@ -390,7 +390,7 @@ public class NoteSpawner : MonoBehaviour if (noteScript != null) { // Setup note script with timing parameters - noteScript.Setup(key, noteData.trackIndex, noteSpeed, realtimeHit, noteData.color, judgeConfig, noteData); + noteScript.Setup(key, noteData.trackIndex, noteSpeed, realtimeHit, noteData.color, judgeConfig, noteData, isSync); // Configure controller for absolute positioning (replaces relative Translate) if (noteController != null) @@ -476,7 +476,7 @@ public class NoteSpawner : MonoBehaviour if (holdNote != null) { // pass realtime hit time (startTime + note.time) and delay 0, include globalHitDelay - holdNote.Setup(holdNoteId, noteData.trackIndex, noteSpeed, baseHit, 0f, false, scheduledEndTime, noteData.color, key, "start", travelTime, judgeConfig, noteData); + holdNote.Setup(holdNoteId, noteData.trackIndex, noteSpeed, baseHit, 0f, false, scheduledEndTime, noteData.color, key, "start", travelTime, judgeConfig, noteData, isSync); // 使用流速倍率 sm 直接进行缩放,确保长条音符在 0.5-2.0 范围内依然能完美衔接 float visualScale = sm; @@ -508,7 +508,7 @@ public class NoteSpawner : MonoBehaviour if (holdSeg != null) { // Documentation text normalized. - holdSeg.Setup(holdNoteId, noteData.trackIndex, noteSpeed, baseHit, segmentDelay, false, scheduledEndTime, noteData.color, key, "middle", travelTime, judgeConfig, noteData); + holdSeg.Setup(holdNoteId, noteData.trackIndex, noteSpeed, baseHit, segmentDelay, false, scheduledEndTime, noteData.color, key, "middle", travelTime, judgeConfig, noteData, false); // 应用与开始段一致的流速缩放 float visualScaleMid = sm; @@ -540,7 +540,7 @@ public class NoteSpawner : MonoBehaviour HoldNote holdEnd = endObj.GetComponent(); if (holdEnd != null) { - holdEnd.Setup(holdNoteId, noteData.trackIndex, noteSpeed, baseHit, endDelay, true, scheduledEndTime, noteData.color, key, "end", travelTime, judgeConfig, noteData); + holdEnd.Setup(holdNoteId, noteData.trackIndex, noteSpeed, baseHit, endDelay, true, scheduledEndTime, noteData.color, key, "end", travelTime, judgeConfig, noteData, false); // 同样应用流速缩放 float visualScaleEnd = sm; diff --git a/Assets/scripts/gamePlay_gameplay/effectEventController.cs b/Assets/scripts/gamePlay_gameplay/effectEventController.cs new file mode 100644 index 00000000..716fc19f --- /dev/null +++ b/Assets/scripts/gamePlay_gameplay/effectEventController.cs @@ -0,0 +1,314 @@ +using SmoothShakeFree; +using UnityEngine; + +public class effectEventController : MonoBehaviour +{ + public enum CameraOffsetAxis + { + X, + Y, + Z + } + + public static effectEventController Instance { get; private set; } + + [Header("Multi Note Screen Shake")] + public bool enableMultiNoteScreenShake = true; + public float multiNoteScreenShakeAmplitude = 0.08f; + + [Header("Camera Drift")] + public bool enableCameraDrift = false; + public Vector2 cameraDriftRange = new Vector2(0.15f, 0.08f); + public float cameraDriftSpeed = 0.3f; + + [Header("Player Skill 10 Camera Offset")] + public float playerSkillCameraOffsetAmount = 0.6f; + public CameraOffsetAxis playerSkillCameraOffsetAxis = CameraOffsetAxis.Y; + + private Transform cachedShakeTarget; + private Transform cachedCameraDriftPivot; + private Transform cachedCameraSkillPivot; + private Vector3 cameraDriftBaseLocalPosition; + private Vector3 cameraSkillBaseLocalPosition; + private float cameraDriftSeedX; + private float cameraDriftSeedY; + + private void Awake() + { + if (Instance == null) + { + Instance = this; + cameraDriftSeedX = Random.Range(0f, 1000f); + cameraDriftSeedY = Random.Range(1000f, 2000f); + CacheShakeTarget(); + return; + } + + if (Instance != this) + { + Destroy(gameObject); + } + } + + private void OnEnable() + { + CacheShakeTarget(); + ResetCameraDriftIfNeeded(); + } + + private void Update() + { + UpdateCameraDrift(); + UpdatePlayerSkillCameraOffset(); + } + + private void CacheShakeTarget() + { + if (Camera.main != null) + { + cachedShakeTarget = Camera.main.transform; + PrewarmShakeComponent(); + EnsureCameraDriftPivot(); + EnsureCameraSkillPivot(); + } + } + + private void PrewarmShakeComponent() + { + if (cachedShakeTarget == null) + return; + + SmoothShake shake = cachedShakeTarget.GetComponent(); + if (shake == null) + { + shake = cachedShakeTarget.gameObject.AddComponent(); + } + + if (shake.positionShake == null) shake.positionShake = new Shaker(); + if (shake.rotationShake == null) shake.rotationShake = new Shaker(); + if (shake.shakers == null || shake.shakers.Length != 2) + shake.shakers = new[] { shake.positionShake, shake.rotationShake }; + if (shake.sum == null || shake.sum.Length != 2) + shake.sum = new Vector3[2]; + } + + private void EnsureCameraDriftPivot() + { + if (cachedShakeTarget == null) + return; + + if (cachedCameraDriftPivot != null) + return; + + Transform currentParent = cachedShakeTarget.parent; + if (currentParent != null && currentParent.name == "__effect_event_camera_drift_pivot") + { + cachedCameraDriftPivot = currentParent; + cameraDriftBaseLocalPosition = cachedCameraDriftPivot.localPosition; + return; + } + + GameObject pivotObject = new GameObject("__effect_event_camera_drift_pivot"); + Transform pivot = pivotObject.transform; + + if (currentParent != null) + { + pivot.SetParent(currentParent, false); + pivot.localPosition = cachedShakeTarget.localPosition; + pivot.localRotation = cachedShakeTarget.localRotation; + pivot.localScale = Vector3.one; + } + else + { + pivot.position = cachedShakeTarget.position; + pivot.rotation = cachedShakeTarget.rotation; + } + + cachedShakeTarget.SetParent(pivot, true); + cachedShakeTarget.localRotation = Quaternion.identity; + + cachedCameraDriftPivot = pivot; + cameraDriftBaseLocalPosition = cachedCameraDriftPivot.localPosition; + } + + private void EnsureCameraSkillPivot() + { + if (cachedShakeTarget == null) + return; + + if (cachedCameraSkillPivot != null) + return; + + Transform currentParent = cachedShakeTarget.parent; + if (currentParent != null && currentParent.name == "__effect_event_camera_skill_pivot") + { + cachedCameraSkillPivot = currentParent; + cameraSkillBaseLocalPosition = cachedCameraSkillPivot.localPosition; + return; + } + + GameObject pivotObject = new GameObject("__effect_event_camera_skill_pivot"); + Transform pivot = pivotObject.transform; + + if (currentParent != null) + { + pivot.SetParent(currentParent, false); + pivot.localPosition = cachedShakeTarget.localPosition; + pivot.localRotation = cachedShakeTarget.localRotation; + pivot.localScale = Vector3.one; + } + else + { + pivot.position = cachedShakeTarget.position; + pivot.rotation = cachedShakeTarget.rotation; + pivot.localScale = Vector3.one; + } + + cachedShakeTarget.SetParent(pivot, true); + cachedShakeTarget.localPosition = Vector3.zero; + cachedShakeTarget.localRotation = Quaternion.identity; + + cachedCameraSkillPivot = pivot; + cameraSkillBaseLocalPosition = cachedCameraSkillPivot.localPosition; + } + + private void UpdateCameraDrift() + { + if (cachedShakeTarget == null) + { + CacheShakeTarget(); + } + + if (cachedShakeTarget == null) + return; + + EnsureCameraDriftPivot(); + if (cachedCameraDriftPivot == null) + return; + + if (!enableCameraDrift) + { + ResetCameraDriftIfNeeded(); + return; + } + + float speed = Mathf.Max(0f, cameraDriftSpeed); + float time = Time.time * speed; + float offsetX = (Mathf.PerlinNoise(cameraDriftSeedX, time) - 0.5f) * 2f * Mathf.Abs(cameraDriftRange.x); + float offsetY = (Mathf.PerlinNoise(cameraDriftSeedY, time) - 0.5f) * 2f * Mathf.Abs(cameraDriftRange.y); + + cachedCameraDriftPivot.localPosition = cameraDriftBaseLocalPosition + new Vector3(offsetX, offsetY, 0f); + } + + private void ResetCameraDriftIfNeeded() + { + if (cachedCameraDriftPivot == null) + return; + + cachedCameraDriftPivot.localPosition = cameraDriftBaseLocalPosition; + } + + private void UpdatePlayerSkillCameraOffset() + { + if (cachedShakeTarget == null) + { + CacheShakeTarget(); + } + + if (cachedShakeTarget == null) + return; + + EnsureCameraSkillPivot(); + if (cachedCameraSkillPivot == null) + return; + + Vector3 targetLocalPosition = cameraSkillBaseLocalPosition; + if (PlayerSkillService.IsSkillEnabled(10)) + { + float offset = playerSkillCameraOffsetAmount; + switch (playerSkillCameraOffsetAxis) + { + case CameraOffsetAxis.X: + targetLocalPosition.x += offset; + break; + case CameraOffsetAxis.Y: + targetLocalPosition.y += offset; + break; + case CameraOffsetAxis.Z: + targetLocalPosition.z += offset; + break; + } + } + + if (cachedCameraSkillPivot.localPosition != targetLocalPosition) + { + cachedCameraSkillPivot.localPosition = targetLocalPosition; + } + } + + public static void RefreshPlayerSkillCameraOffset() + { + effectEventController controller = Instance != null ? Instance : FindAnyObjectByType(); + if (controller == null) + return; + + controller.CacheShakeTarget(); + controller.UpdatePlayerSkillCameraOffset(); + } + + public static void TryTriggerMultiNoteShake() + { + effectEventController controller = Instance != null ? Instance : FindAnyObjectByType(); + if (controller == null) + return; + + controller.TriggerMultiNoteShakeInternal(); + } + + private void TriggerMultiNoteShakeInternal() + { + if (!enableMultiNoteScreenShake) + return; + + if (cachedShakeTarget == null) + { + CacheShakeTarget(); + } + + if (cachedShakeTarget == null) + return; + + float amplitudeValue = Mathf.Max(0f, multiNoteScreenShakeAmplitude); + if (amplitudeValue <= 0f) + return; + + SmoothShake shake = cachedShakeTarget.GetComponent(); + if (shake == null) + { + shake = cachedShakeTarget.gameObject.AddComponent(); + } + + if (shake.positionShake == null) shake.positionShake = new Shaker(); + if (shake.rotationShake == null) shake.rotationShake = new Shaker(); + + shake.positionShake.noiseType = Shaker.NoiseType.SineWave; + shake.positionShake.amplitude = new Vector3(amplitudeValue, amplitudeValue, 0f); + shake.positionShake.frequency = new Vector3(20f, 20f, 0f); + shake.rotationShake.amplitude = Vector3.zero; + shake.rotationShake.frequency = Vector3.zero; + + shake.timeSettings.constantShake = false; + shake.timeSettings.fadeInDuration = 0.03f; + shake.timeSettings.holdDuration = 0.04f; + shake.timeSettings.fadeOutDuration = 0.05f; + + if (shake.timeSettings.fadeInCurve == null || shake.timeSettings.fadeInCurve.length == 0) + shake.timeSettings.fadeInCurve = AnimationCurve.Linear(0f, 0f, 1f, 1f); + if (shake.timeSettings.fadeOutCurve == null || shake.timeSettings.fadeOutCurve.length == 0) + shake.timeSettings.fadeOutCurve = AnimationCurve.Linear(0f, 1f, 1f, 0f); + + shake.shakers = new[] { shake.positionShake, shake.rotationShake }; + shake.sum = new Vector3[2]; + shake.StartShake(); + } +} diff --git a/Assets/scripts/gamePlay_gameplay/effectEventController.cs.meta b/Assets/scripts/gamePlay_gameplay/effectEventController.cs.meta new file mode 100644 index 00000000..772f1609 --- /dev/null +++ b/Assets/scripts/gamePlay_gameplay/effectEventController.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: f65edb710af433c479467d8c932e5d59 \ No newline at end of file diff --git a/Assets/scripts/gamePlay_gameplay/globalNoteEffect.cs b/Assets/scripts/gamePlay_gameplay/globalNoteEffect.cs new file mode 100644 index 00000000..812026d9 --- /dev/null +++ b/Assets/scripts/gamePlay_gameplay/globalNoteEffect.cs @@ -0,0 +1,361 @@ +using SmoothShakeFree; +using System.Collections; +using UnityEngine; +using UnityEngine.UI; + +public class globalNoteEffect : MonoBehaviour +{ + public static globalNoteEffect Instance { get; private set; } + + [Header("Camera Shake Event")] + public float cameraShakeAmplitude = 0.12f; + + [Header("Flash Blink Event")] + public Image flashBlinkImage; + public float flashBlinkFadeDuration = 0.2f; + + [Header("Camera Dash Event")] + public float targetCameraZPosition = -6.5f; + public AnimationCurve cameraDashCurve = AnimationCurve.EaseInOut(0f, 0f, 1f, 1f); + public float cameraDashDuration = 0.12f; + + [Header("Camera Wave FX")] + public float cameraWaveEnterDuration = 0.12f; + public float cameraWaveRecoverDuration = 0.12f; + + [Header("Camera Glitch FX")] + public float cameraGlitchEnterDuration = 0.08f; + public float cameraGlitchRecoverDuration = 0.12f; + + [Header("Camera Monochrome FX")] + public float cameraMonochromeEnterDuration = 0.1f; + public float cameraMonochromeRecoverDuration = 0.14f; + + [Header("Screenshot Scale FX")] + public float screenshotScaleStartOpacity = 0.5f; + public float screenshotScaleFadeDuration = 0.22f; + public float screenshotScaleEndScale = 1.12f; + + private Transform cachedCameraTransform; + private Coroutine flashBlinkCoroutine; + private Coroutine cameraDashCoroutine; + private float cameraBaseLocalZ; + private bool hasCameraBaseLocalZ; + + private void Awake() + { + if (Instance == null) + { + Instance = this; + } + else if (Instance != this) + { + Destroy(gameObject); + return; + } + + CacheCameraTransform(); + PrewarmRuntime(); + } + + private void Start() + { + SetFlashImageAlpha(0f); + } + + private void OnEnable() + { + CacheCameraTransform(); + SetFlashImageAlpha(0f); + PrewarmRuntime(); + } + + private void LateUpdate() + { + if (cachedCameraTransform == null) + { + CacheCameraTransform(); + } + + if (cachedCameraTransform != null && cameraDashCoroutine == null) + { + cameraBaseLocalZ = cachedCameraTransform.localPosition.z; + hasCameraBaseLocalZ = true; + } + } + + private void CacheCameraTransform() + { + if (Camera.main != null) + { + cachedCameraTransform = Camera.main.transform; + cameraBaseLocalZ = cachedCameraTransform.localPosition.z; + hasCameraBaseLocalZ = true; + } + } + + public void PrewarmRuntime() + { + CacheCameraTransform(); + + if (cachedCameraTransform != null) + { + SmoothShake shake = cachedCameraTransform.GetComponent(); + if (shake == null) + { + shake = cachedCameraTransform.gameObject.AddComponent(); + } + + if (shake.positionShake == null) shake.positionShake = new Shaker(); + if (shake.rotationShake == null) shake.rotationShake = new Shaker(); + if (shake.shakers == null || shake.shakers.Length != 2) + shake.shakers = new[] { shake.positionShake, shake.rotationShake }; + if (shake.sum == null || shake.sum.Length != 2) + shake.sum = new Vector3[2]; + } + + GlobalDistortionRuntimeController.EnsureInstance(); + GlobalGlitchRuntimeController.EnsureInstance(); + GlobalMonochromeRuntimeController.EnsureInstance(); + GlobalAfterimageRuntimeController.EnsureInstance(); + } + + public static void TryTrigger(string noteFunction) + { + if (string.IsNullOrWhiteSpace(noteFunction)) + return; + + globalNoteEffect controller = GetOrCreateInstance(); + if (controller == null) + return; + + controller.TriggerInternal(noteFunction.Trim()); + } + + private static globalNoteEffect GetOrCreateInstance() + { + if (Instance != null) + return Instance; + + globalNoteEffect found = FindAnyObjectByType(); + if (found != null) + { + Instance = found; + return found; + } + + GameObject runtimeObject = new GameObject("__global_note_effect_runtime"); + return runtimeObject.AddComponent(); + } + + private void TriggerInternal(string noteFunction) + { + switch (noteFunction) + { + case "CameraShakeEvent": + TriggerCameraShake(); + break; + case "FlashBlinkEvent": + TriggerFlashBlink(); + break; + case "CameraScaleEvent": + TriggerCameraDash(); + break; + case "CameraWaveFX": + TriggerCameraWaveFx(); + break; + case "CameraGlitchFX": + TriggerCameraGlitchFx(); + break; + case "CameraMonochromeFX": + TriggerCameraMonochromeFx(); + break; + case "ScreenshotScale": + TriggerScreenshotScaleFx(); + break; + } + } + + private void TriggerCameraShake() + { + CacheCameraTransform(); + if (cachedCameraTransform == null) + return; + + float amplitudeValue = Mathf.Max(0f, cameraShakeAmplitude); + if (amplitudeValue <= 0f) + return; + + SmoothShake shake = cachedCameraTransform.GetComponent(); + if (shake == null) + { + shake = cachedCameraTransform.gameObject.AddComponent(); + } + + if (shake.positionShake == null) shake.positionShake = new Shaker(); + if (shake.rotationShake == null) shake.rotationShake = new Shaker(); + + shake.positionShake.noiseType = Shaker.NoiseType.SineWave; + shake.positionShake.amplitude = new Vector3(amplitudeValue, amplitudeValue, 0f); + shake.positionShake.frequency = new Vector3(18f, 18f, 0f); + shake.rotationShake.amplitude = Vector3.zero; + shake.rotationShake.frequency = Vector3.zero; + + shake.timeSettings.constantShake = false; + shake.timeSettings.fadeInDuration = 0.02f; + shake.timeSettings.holdDuration = 0.04f; + shake.timeSettings.fadeOutDuration = 0.05f; + + if (shake.timeSettings.fadeInCurve == null || shake.timeSettings.fadeInCurve.length == 0) + shake.timeSettings.fadeInCurve = AnimationCurve.Linear(0f, 0f, 1f, 1f); + if (shake.timeSettings.fadeOutCurve == null || shake.timeSettings.fadeOutCurve.length == 0) + shake.timeSettings.fadeOutCurve = AnimationCurve.Linear(0f, 1f, 1f, 0f); + + shake.shakers = new[] { shake.positionShake, shake.rotationShake }; + shake.sum = new Vector3[2]; + shake.StartShake(); + } + + private void TriggerFlashBlink() + { + if (flashBlinkImage == null) + return; + + if (flashBlinkCoroutine != null) + { + StopCoroutine(flashBlinkCoroutine); + } + + flashBlinkCoroutine = StartCoroutine(FlashBlinkCoroutine()); + } + + private IEnumerator FlashBlinkCoroutine() + { + SetFlashImageAlpha(1f); + + float duration = Mathf.Max(0.01f, flashBlinkFadeDuration); + float elapsed = 0f; + while (elapsed < duration) + { + elapsed += Time.deltaTime; + float t = Mathf.Clamp01(elapsed / duration); + SetFlashImageAlpha(1f - t); + yield return null; + } + + SetFlashImageAlpha(0f); + flashBlinkCoroutine = null; + } + + private void TriggerCameraDash() + { + CacheCameraTransform(); + if (cachedCameraTransform == null) + return; + + if (cameraDashCoroutine != null) + { + StopCoroutine(cameraDashCoroutine); + if (hasCameraBaseLocalZ) + { + Vector3 resetPosition = cachedCameraTransform.localPosition; + resetPosition.z = cameraBaseLocalZ; + cachedCameraTransform.localPosition = resetPosition; + } + } + + cameraDashCoroutine = StartCoroutine(CameraDashCoroutine()); + } + + private IEnumerator CameraDashCoroutine() + { + if (!hasCameraBaseLocalZ) + { + cameraBaseLocalZ = cachedCameraTransform.localPosition.z; + hasCameraBaseLocalZ = true; + } + + float baseLocalZ = cameraBaseLocalZ; + float targetZ = targetCameraZPosition; + if (Mathf.Approximately(targetZ, baseLocalZ)) + { + targetZ = baseLocalZ + 1.5f; + } + float duration = Mathf.Max(0.01f, cameraDashDuration); + AnimationCurve curve = cameraDashCurve == null || cameraDashCurve.length == 0 + ? AnimationCurve.EaseInOut(0f, 0f, 1f, 1f) + : cameraDashCurve; + + float elapsed = 0f; + while (elapsed < duration) + { + elapsed += Time.deltaTime; + float t = Mathf.Clamp01(elapsed / duration); + float curvedT = curve.Evaluate(t); + Vector3 position = cachedCameraTransform.localPosition; + position.z = Mathf.LerpUnclamped(baseLocalZ, targetZ, curvedT); + cachedCameraTransform.localPosition = position; + yield return null; + } + + elapsed = 0f; + while (elapsed < duration) + { + elapsed += Time.deltaTime; + float t = Mathf.Clamp01(elapsed / duration); + float curvedT = curve.Evaluate(t); + Vector3 position = cachedCameraTransform.localPosition; + position.z = Mathf.LerpUnclamped(targetZ, baseLocalZ, curvedT); + cachedCameraTransform.localPosition = position; + yield return null; + } + + Vector3 finalPosition = cachedCameraTransform.localPosition; + finalPosition.z = baseLocalZ; + cachedCameraTransform.localPosition = finalPosition; + cameraDashCoroutine = null; + } + + private void TriggerCameraWaveFx() + { + GlobalDistortionRuntimeController.TriggerWaveEffect( + Mathf.Max(0.0001f, cameraWaveEnterDuration), + Mathf.Max(0.0001f, cameraWaveRecoverDuration) + ); + } + + private void TriggerCameraGlitchFx() + { + GlobalGlitchRuntimeController.TriggerWaveEffect( + Mathf.Max(0.0001f, cameraGlitchEnterDuration), + Mathf.Max(0.0001f, cameraGlitchRecoverDuration) + ); + } + + private void TriggerCameraMonochromeFx() + { + GlobalMonochromeRuntimeController.Trigger( + Mathf.Max(0.0001f, cameraMonochromeEnterDuration), + Mathf.Max(0.0001f, cameraMonochromeRecoverDuration) + ); + } + + private void TriggerScreenshotScaleFx() + { + GlobalAfterimageRuntimeController.Trigger( + Mathf.Clamp01(screenshotScaleStartOpacity), + Mathf.Max(0.0001f, screenshotScaleFadeDuration), + Mathf.Max(1f, screenshotScaleEndScale) + ); + } + + private void SetFlashImageAlpha(float alpha) + { + if (flashBlinkImage == null) + return; + + Color color = flashBlinkImage.color; + color.a = Mathf.Clamp01(alpha); + flashBlinkImage.color = color; + } +} diff --git a/Assets/scripts/gamePlay_gameplay/globalNoteEffect.cs.meta b/Assets/scripts/gamePlay_gameplay/globalNoteEffect.cs.meta new file mode 100644 index 00000000..908a897c --- /dev/null +++ b/Assets/scripts/gamePlay_gameplay/globalNoteEffect.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 7aad6dbb8ac9a574b832837614506af8 \ No newline at end of file diff --git a/Assets/scripts/gamePlay_gameplay/player_effect_prefab/instant/iNumberPrefabController.cs b/Assets/scripts/gamePlay_gameplay/player_effect_prefab/instant/iNumberPrefabController.cs index 20c22651..186f249f 100644 --- a/Assets/scripts/gamePlay_gameplay/player_effect_prefab/instant/iNumberPrefabController.cs +++ b/Assets/scripts/gamePlay_gameplay/player_effect_prefab/instant/iNumberPrefabController.cs @@ -28,11 +28,19 @@ public class iNumberPrefabController : MonoBehaviour private bool _warnedMissingPrefab; private bool _warnedMissingParents; + private Transform pooledRoot; + private readonly System.Collections.Generic.Dictionary> pools + = new System.Collections.Generic.Dictionary>(); + private readonly System.Collections.Generic.Dictionary sourcePrefabs + = new System.Collections.Generic.Dictionary(); private void Awake() { if (Instance == null) Instance = this; else if (Instance != this) { Destroy(gameObject); return; } + + pooledRoot = new GameObject("__instant_number_pool").transform; + pooledRoot.SetParent(transform, false); } private void Start() @@ -150,19 +158,76 @@ public class iNumberPrefabController : MonoBehaviour return; } - var go = Instantiate(prefab, parent, false); - if (go == null) return; + var view = GetPooledInstance(prefab, parent); + if (view != null) view.Play(type, signedValue); + } - if (prefab.scene.IsValid()) + private playerInstantNumbersPrefab GetPooledInstance(GameObject prefab, Transform parent) + { + if (prefab == null || parent == null) + return null; + + if (!pools.TryGetValue(prefab, out var pool)) { - if (prefab.activeSelf) prefab.SetActive(false); + pool = new System.Collections.Generic.Stack(); + pools[prefab] = pool; } - // Ensure the newly created object is active before playing animation - if (!go.activeInHierarchy) go.SetActive(true); + playerInstantNumbersPrefab view = null; + while (pool.Count > 0 && view == null) + { + view = pool.Pop(); + } - var view = go.GetComponent(); - if (view != null) view.Play(type, signedValue); + if (view == null) + { + var go = Instantiate(prefab, parent, false); + if (go == null) + return null; + + view = go.GetComponent(); + if (view == null) + return null; + + sourcePrefabs[view] = prefab; + } + else + { + view.transform.SetParent(parent, false); + view.gameObject.SetActive(true); + } + + view.ResetForReuse(); + return view; + } + + public static bool ReturnInstance(playerInstantNumbersPrefab view) + { + if (Instance == null || view == null) + return false; + + return Instance.ReturnInstanceInternal(view); + } + + private bool ReturnInstanceInternal(playerInstantNumbersPrefab view) + { + if (view == null) + return false; + + if (!sourcePrefabs.TryGetValue(view, out var prefab) || prefab == null) + return false; + + if (!pools.TryGetValue(prefab, out var pool)) + { + pool = new System.Collections.Generic.Stack(); + pools[prefab] = pool; + } + + view.transform.SetParent(pooledRoot, false); + view.ResetForReuse(); + view.gameObject.SetActive(false); + pool.Push(view); + return true; } private void WarnMissingPrefabOnce() diff --git a/Assets/scripts/gamePlay_gameplay/player_effect_prefab/instant/playerInstantNumbersPrefab.cs b/Assets/scripts/gamePlay_gameplay/player_effect_prefab/instant/playerInstantNumbersPrefab.cs index 821f76b0..5279350e 100644 --- a/Assets/scripts/gamePlay_gameplay/player_effect_prefab/instant/playerInstantNumbersPrefab.cs +++ b/Assets/scripts/gamePlay_gameplay/player_effect_prefab/instant/playerInstantNumbersPrefab.cs @@ -51,14 +51,33 @@ public class playerInstantNumbersPrefab : MonoBehaviour _canvasGroup.alpha = 1f; } + private void OnDisable() + { + if (_animationCoroutine != null) + { + StopCoroutine(_animationCoroutine); + _animationCoroutine = null; + } + } + public void Play(iNumberPrefabController.InstantNumberType type, int signedValue) { + ResetForReuse(); ApplyVisual(type, signedValue); if (_animationCoroutine != null) StopCoroutine(_animationCoroutine); _animationCoroutine = StartCoroutine(Animate()); } + public void ResetForReuse() + { + if (_canvasGroup != null) _canvasGroup.alpha = 1f; + transform.localRotation = Quaternion.identity; + transform.localScale = Vector3.one; + if (_rectTransform != null) _rectTransform.anchoredPosition = Vector2.zero; + else transform.localPosition = Vector3.zero; + } + private void ApplyVisual(iNumberPrefabController.InstantNumberType type, int signedValue) { if (numberText != null) @@ -178,6 +197,10 @@ public class playerInstantNumbersPrefab : MonoBehaviour yield return null; } - Destroy(gameObject); + _animationCoroutine = null; + if (!iNumberPrefabController.ReturnInstance(this)) + { + Destroy(gameObject); + } } } diff --git a/Assets/scripts/gamePlay_gameplay/settlementController.cs b/Assets/scripts/gamePlay_gameplay/settlementController.cs index 37b3ed43..d1d32523 100644 --- a/Assets/scripts/gamePlay_gameplay/settlementController.cs +++ b/Assets/scripts/gamePlay_gameplay/settlementController.cs @@ -524,6 +524,8 @@ public class settlementController : MonoBehaviour targetTotalScore = targetPmScore + targetIdolScore; targetTotalPercent = (float)targetTotalScore / Mathf.Max(1, _1000000) * 100f; + PlayerSkillService.NotifySettlementCompleted(targetIdolScore); + finalScore_Text.text = targetTotalScore.ToString(); pmScoreSum_Text.text = targetPmScore.ToString(); diff --git a/Assets/scripts/gameplay_teamUI/teamUIController.cs b/Assets/scripts/gameplay_teamUI/teamUIController.cs index 3f5977a8..85b14423 100644 --- a/Assets/scripts/gameplay_teamUI/teamUIController.cs +++ b/Assets/scripts/gameplay_teamUI/teamUIController.cs @@ -370,45 +370,7 @@ public class teamUIController : MonoBehaviour #else // Runtime: prefer runtimeResourcesFolderPath, fallback to selectedProjectFolderPath string resourcesPath = ResolveResourcesRelativePath(!string.IsNullOrEmpty(runtimeResourcesFolderPath) ? runtimeResourcesFolderPath : selectedProjectFolderPath); - - List runtimeDiscovered = new List(); - if (!string.IsNullOrEmpty(resourcesPath)) - { - resourcesPath = resourcesPath.Trim('/'); - try - { - var arr = Resources.LoadAll(resourcesPath); - if (arr != null && arr.Length > 0) - runtimeDiscovered.AddRange(arr); - - // If nothing loaded from the specific folder, fallback to loading all and filter by name later - if (runtimeDiscovered.Count == 0) - { - var arrAll = Resources.LoadAll(""); - if (arrAll != null && arrAll.Length > 0) // Fixed: changed arr.Length to arrAll.Length - { - runtimeDiscovered.AddRange(arrAll); - Debug.LogWarning($"[teamUIController] (Runtime) Resources.LoadAll returned 0 in '{resourcesPath}', fell back to loading all ScriptableObjects ({arrAll.Length})"); - } - } - - Debug.Log($"[teamUIcontroller] (Runtime) Loaded {runtimeDiscovered.Count} objects from Resources/{resourcesPath}"); - } - catch (System.Exception ex) - { - Debug.LogWarning($"[teamUIController] (Runtime) Resources.LoadAll failed for '{resourcesPath}': {ex.Message}"); - var arrAll = Resources.LoadAll(""); - if (arrAll != null && arrAll.Length > 0) // Fixed: changed arr.Length to arrAll.Length - runtimeDiscovered.AddRange(arrAll); - } - } - else - { - var arr = Resources.LoadAll(""); - if (arr != null && arr.Length > 0) - runtimeDiscovered.AddRange(arr); - Debug.Log($"[teamUIController] (Runtime) Loaded {arr?.Length ?? 0} objects from Resources (project-wide)"); - } + List runtimeDiscovered = GetOrBuildRuntimeAllyDiscovered(resourcesPath); TeamCharacterList globalList = null; if (teamSettingPanel.Instance != null) @@ -549,9 +511,7 @@ public class teamUIController : MonoBehaviour // attempt to set teammate image from underlying AllyHero_SO if possible try { - var ahList = Resources.LoadAll(""); - AllyHero_SO matched = null; - foreach (var a in ahList) if (a != null && a.ally_heroID == id) { matched = a; break; } + AllyHero_SO matched = GetCachedRuntimeAllyHero(id); if (matched != null) { var sprite = matched.ally_heroProfile != null ? matched.ally_heroProfile : matched.ally_heroImage; @@ -570,6 +530,77 @@ public class teamUIController : MonoBehaviour #endif } + private List GetOrBuildRuntimeAllyDiscovered(string resourcesPath) + { + resourcesPath = (resourcesPath ?? string.Empty).Trim('/'); + if (_runtimeAllyDiscovered != null && _runtimeAllyResourcesPath == resourcesPath) + return _runtimeAllyDiscovered; + + var runtimeDiscovered = new List(); + if (!string.IsNullOrEmpty(resourcesPath)) + { + try + { + var arr = Resources.LoadAll(resourcesPath); + if (arr != null && arr.Length > 0) + runtimeDiscovered.AddRange(arr); + + if (runtimeDiscovered.Count == 0) + { + var arrAll = Resources.LoadAll(""); + if (arrAll != null && arrAll.Length > 0) + { + runtimeDiscovered.AddRange(arrAll); + Debug.LogWarning($"[teamUIController] (Runtime) Resources.LoadAll returned 0 in '{resourcesPath}', fell back to loading all ScriptableObjects ({arrAll.Length})"); + } + } + + Debug.Log($"[teamUIcontroller] (Runtime) Loaded {runtimeDiscovered.Count} objects from Resources/{resourcesPath}"); + } + catch (System.Exception ex) + { + Debug.LogWarning($"[teamUIController] (Runtime) Resources.LoadAll failed for '{resourcesPath}': {ex.Message}"); + var arrAll = Resources.LoadAll(""); + if (arrAll != null && arrAll.Length > 0) + runtimeDiscovered.AddRange(arrAll); + } + } + else + { + var arr = Resources.LoadAll(""); + if (arr != null && arr.Length > 0) + runtimeDiscovered.AddRange(arr); + Debug.Log($"[teamUIController] (Runtime) Loaded {arr?.Length ?? 0} objects from Resources (project-wide)"); + } + + _runtimeAllyResourcesPath = resourcesPath; + _runtimeAllyDiscovered = runtimeDiscovered; + _cachedRuntimeAllyHeroes = null; + _runtimeAllyHeroById = null; + return runtimeDiscovered; + } + + private AllyHero_SO GetCachedRuntimeAllyHero(int id) + { + if (id <= 0) return null; + + if (_runtimeAllyHeroById != null && _runtimeAllyHeroById.TryGetValue(id, out var cached)) + return cached; + + if (_cachedRuntimeAllyHeroes == null) + { + _cachedRuntimeAllyHeroes = Resources.LoadAll("") ?? System.Array.Empty(); + _runtimeAllyHeroById = new Dictionary(); + foreach (var hero in _cachedRuntimeAllyHeroes) + { + if (hero == null) continue; + _runtimeAllyHeroById[hero.ally_heroID] = hero; + } + } + + return _runtimeAllyHeroById.TryGetValue(id, out var heroFound) ? heroFound : null; + } + // ResolveResourcesRelativePath helper method is missing, assuming it exists externally or is part of a base class / extension. // Since the user is providing the full class, I will assume it's either defined outside this snippet or is implicitly handled, // but the code within #if UNITY_EDITOR is what matters for the file content. @@ -815,6 +846,10 @@ public class teamUIController : MonoBehaviour private const string EnemyDieAnimationName = "die"; private string _runtimeEnemyResourcesPath; private List _runtimeEnemyDiscovered; + private string _runtimeAllyResourcesPath; + private List _runtimeAllyDiscovered; + private AllyHero_SO[] _cachedRuntimeAllyHeroes; + private Dictionary _runtimeAllyHeroById; // For total enemy health bar private int totalMaxHP = 0; // Documentation text normalized. @@ -1031,6 +1066,8 @@ public class teamUIController : MonoBehaviour public bool isEnemy_active = true; [Tooltip("Documentation text normalized.")] public Image currentEnemy_characterImage; + [Tooltip("Shown on currentEnemy_characterImage after the last enemy is defeated. If empty, falls back to the last enemy SO sprite.")] + public Sprite allEnemiesDefeatedSprite; [Tooltip("Documentation text normalized.")] public Image currentEnemy_healthImage; [Tooltip("Documentation text normalized.")] @@ -1055,6 +1092,10 @@ public class teamUIController : MonoBehaviour public TextMeshProUGUI currentEnemy_manaRate; [Tooltip("Documentation text normalized.")] public TextMeshProUGUI currentEnemy_current_scoreText; // rate : now score / max score + [Tooltip("Hidden after all enemies are defeated.")] + public GameObject currentEnemy_bountyObject; + [Tooltip("Displays the current enemy bounty score.")] + public Text currentEnemy_bountyText; [Tooltip("Documentation text normalized.")] [SerializeField] private int enemy_id; [Tooltip("Documentation text normalized.")] @@ -1067,6 +1108,9 @@ public class teamUIController : MonoBehaviour [SerializeField] private Image spine_to_put_referenceImage; [SerializeField] private Color spineHurtFlashColor = new Color(1f, 0.2f, 0.2f, 1f); [SerializeField] private float spineUniformHeight = 0f; + private Coroutine enemyBountyTextCoroutine; + private bool enemyBountyTransitionActive = false; + private int currentDisplayedEnemyBounty = 0; public float SpineUniformHeight { get => spineUniformHeight; @@ -1598,8 +1642,10 @@ public class teamUIController : MonoBehaviour } if (currentEnemy_characterImage != null) { - // Set the sprite from SO - var sprite = so.enemy_Image != null ? so.enemy_Image : (so.enemy_Profile != null ? so.enemy_Profile : null); + // Use the configured victory sprite first, otherwise fall back to the defeated enemy sprite. + var sprite = allEnemiesDefeatedSprite != null + ? allEnemiesDefeatedSprite + : (so.enemy_Image != null ? so.enemy_Image : (so.enemy_Profile != null ? so.enemy_Profile : null)); currentEnemy_characterImage.sprite = sprite; // Apply grayscale material @@ -1716,6 +1762,7 @@ public class teamUIController : MonoBehaviour if (currentEnemy_manaImage != null) currentEnemy_manaImage.fillAmount = 0f; if (currentEnemy_fademanaImage != null) currentEnemy_fademanaImage.fillAmount = 0f; if (currentEnemy_typeText != null) currentEnemy_typeText.text = "(普通敌人)"; + HideEnemyBountyUiImmediate(); UpdateEnemyListText(); // Documentation text normalized. UpdateAllEnemyTotalHealthUIImmediate(); @@ -1756,6 +1803,8 @@ public class teamUIController : MonoBehaviour if (currentEnemy_manaImage != null) currentEnemy_manaImage.fillAmount = 0f; if (currentEnemy_fademanaImage != null) currentEnemy_fademanaImage.fillAmount = 0f; if (currentEnemy_typeText != null) currentEnemy_typeText.text = "(普通敌人)"; + if (!enemyBountyTransitionActive) + HideEnemyBountyUiImmediate(); UpdateEnemyListText(); // Update total health bar to 0 UpdateAllEnemyTotalHealthUIImmediate(); @@ -1834,6 +1883,23 @@ public class teamUIController : MonoBehaviour // ensure UI parent is visible if (objectFather_enemy != null) objectFather_enemy.SetActive(true); + int currentEnemyBounty = CalculateEnemyBountyScore(so); + if (currentEnemy_bountyObject != null) + currentEnemy_bountyObject.SetActive(true); + if (enemyCurrentCount == 0 && currentDisplayedEnemyBounty == 0 && !enemyBountyTransitionActive) + { + if (enemyBountyTextCoroutine != null) + { + StopCoroutine(enemyBountyTextCoroutine); + enemyBountyTextCoroutine = null; + } + SetEnemyBountyDisplayImmediate(currentEnemyBounty); + } + else + { + AnimateEnemyBountyRise(currentEnemyBounty); + } + // reset previous values so Update picks up initial state prevEnemyHP = enemyCombatantInstance.currentHP; prevEnemyMana = enemyCombatantInstance.currentMana; @@ -1992,6 +2058,16 @@ public class teamUIController : MonoBehaviour } if (delay > 0f) { + int nextIndex = enemyCurrentCount + 1; + if (nextIndex >= recognizedEnemySOs.Length) + { + AnimateEnemyBountyToZero(true); + } + else + { + AnimateEnemyBountyToZero(false); + } + if (_enemySpineDeathCoroutine != null) { StopCoroutine(_enemySpineDeathCoroutine); @@ -2004,6 +2080,16 @@ public class teamUIController : MonoBehaviour } } + int nextEnemyIndex = enemyCurrentCount + 1; + if (nextEnemyIndex >= recognizedEnemySOs.Length) + { + AnimateEnemyBountyToZero(true); + } + else + { + AnimateEnemyBountyToZero(false); + } + enemyCurrentCount++; SpawnNextEnemy(); } @@ -2014,6 +2100,113 @@ public class teamUIController : MonoBehaviour UpdateEnemyUIImmediate(); } + private int CalculateEnemyBountyScore(EnemyData_SO so) + { + if (so == null) + return 0; + + int difficultyID = BeatmapManager.Instance != null ? BeatmapManager.Instance.assignedDifficulty : 0; + EnemyData_SO.EnemyDifficultyStats stats = so.GetStatsByDifficultyID(difficultyID); + int calculatedMaxHp = Mathf.Max(0, stats.enemy_maxHP); + float difficultyLevel = ResolveCurrentDifficultyLevel(difficultyID); + float totalBounty = calculatedMaxHp * 0.05f * difficultyLevel + so.enemyBountyBonus; + return Mathf.Max(0, Mathf.CeilToInt(totalBounty)); + } + + private float ResolveCurrentDifficultyLevel(int difficultyID) + { + BeatmapManager beatmapManager = BeatmapManager.Instance; + if (beatmapManager == null || beatmapManager.assignedSongData == null || beatmapManager.assignedSongData.chartFiles == null) + return 1f; + + List chartFiles = beatmapManager.assignedSongData.chartFiles; + for (int i = 0; i < chartFiles.Count; i++) + { + ChartFileEntry entry = chartFiles[i]; + if (entry == null || entry.difficulty != difficultyID) + continue; + + return Mathf.Max(0f, entry.difficultyLEVEL); + } + + return 1f; + } + + private void SetEnemyBountyDisplayImmediate(int value) + { + currentDisplayedEnemyBounty = Mathf.Max(0, value); + if (currentEnemy_bountyText != null) + currentEnemy_bountyText.text = currentDisplayedEnemyBounty.ToString(); + } + + private void HideEnemyBountyUiImmediate() + { + if (enemyBountyTextCoroutine != null) + { + StopCoroutine(enemyBountyTextCoroutine); + enemyBountyTextCoroutine = null; + } + + enemyBountyTransitionActive = false; + SetEnemyBountyDisplayImmediate(0); + if (currentEnemy_bountyObject != null) + currentEnemy_bountyObject.SetActive(false); + } + + private void AnimateEnemyBountyRise(int targetValue) + { + if (enemyBountyTextCoroutine != null) + StopCoroutine(enemyBountyTextCoroutine); + + if (currentEnemy_bountyObject != null) + currentEnemy_bountyObject.SetActive(true); + + enemyBountyTransitionActive = true; + enemyBountyTextCoroutine = StartCoroutine(AnimateEnemyBountyValueRoutine(0, Mathf.Max(0, targetValue), 1f, false)); + } + + private void AnimateEnemyBountyToZero(bool hideAfterZero) + { + if (enemyBountyTextCoroutine != null) + StopCoroutine(enemyBountyTextCoroutine); + + if (currentEnemy_bountyObject != null) + currentEnemy_bountyObject.SetActive(true); + + enemyBountyTransitionActive = true; + enemyBountyTextCoroutine = StartCoroutine(AnimateEnemyBountyValueRoutine(currentDisplayedEnemyBounty, 0, 1f, hideAfterZero)); + } + + private IEnumerator AnimateEnemyBountyValueRoutine(int startValue, int endValue, float duration, bool deactivateAtEnd) + { + enemyBountyTransitionActive = true; + SetEnemyBountyDisplayImmediate(startValue); + + if (duration <= 0f) + { + SetEnemyBountyDisplayImmediate(endValue); + } + else + { + float elapsed = 0f; + while (elapsed < duration) + { + elapsed += Time.deltaTime; + float t = Mathf.Clamp01(elapsed / duration); + int value = Mathf.RoundToInt(Mathf.Lerp(startValue, endValue, t)); + SetEnemyBountyDisplayImmediate(value); + yield return null; + } + SetEnemyBountyDisplayImmediate(endValue); + } + + enemyBountyTransitionActive = false; + enemyBountyTextCoroutine = null; + + if (deactivateAtEnd && currentEnemy_bountyObject != null) + currentEnemy_bountyObject.SetActive(false); + } + // Documentation text normalized. // ========================================================= @@ -2066,6 +2259,15 @@ public class teamUIController : MonoBehaviour Debug.Log($"[teamUIController] Re-initializing current enemy instance with new HP: {stats.enemy_maxHP}"); enemyCombatantInstance.InitializeFromSO(currentSO, diffID); UpdateEnemyUIImmediate(); + + // The first enemy can be spawned before BeatmapManager finishes writing + // the calculated HP back into the enemy SO. Refresh bounty text here so it + // reflects the final computed max HP rather than the pre-calculation value. + int refreshedBounty = CalculateEnemyBountyScore(currentSO); + if (currentEnemy_bountyObject != null) + currentEnemy_bountyObject.SetActive(true); + if (!enemyBountyTransitionActive) + SetEnemyBountyDisplayImmediate(refreshedBounty); } } } diff --git a/Assets/scripts/rendering.meta b/Assets/scripts/rendering.meta new file mode 100644 index 00000000..ddc8c1c9 --- /dev/null +++ b/Assets/scripts/rendering.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 90bd6951a29795d4a943028d2150ce08 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/scripts/rendering/Editor.meta b/Assets/scripts/rendering/Editor.meta new file mode 100644 index 00000000..e6da1cf9 --- /dev/null +++ b/Assets/scripts/rendering/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3211f9d28619bb347a531aa2252d51eb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/scripts/rendering/Editor/GlobalAfterimageInstaller.cs b/Assets/scripts/rendering/Editor/GlobalAfterimageInstaller.cs new file mode 100644 index 00000000..0dc7ab58 --- /dev/null +++ b/Assets/scripts/rendering/Editor/GlobalAfterimageInstaller.cs @@ -0,0 +1,159 @@ +#if UNITY_EDITOR +using System.Reflection; +using UnityEditor; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; + +[InitializeOnLoad] +public static class GlobalAfterimageInstaller +{ + private const string RendererDataPath = "Assets/Settings/Renderer2D.asset"; + private const string GameplayVolumeProfilePath = "Assets/Scenes/gamePlay_gamePlay/gpGV.asset"; + private static bool installScheduled; + + static GlobalAfterimageInstaller() + { + ScheduleInstall(); + } + + [MenuItem("Bansonic/Rendering/Install Global Afterimage")] + public static void EnsureInstalledMenu() + { + EnsureInstalled(); + } + + private static void ScheduleInstall() + { + if (installScheduled) + return; + + installScheduled = true; + EditorApplication.delayCall += RunScheduledInstall; + } + + private static void RunScheduledInstall() + { + installScheduled = false; + EnsureInstalled(); + } + + private static void EnsureInstalled() + { + if (EditorApplication.isCompiling || BuildPipeline.isBuildingPlayer) + { + ScheduleInstall(); + return; + } + + if (IsUnsafeSelectionActive()) + { + ScheduleInstall(); + return; + } + + EnsureRendererFeatureInstalled(); + EnsureVolumeOverrideInstalled(); + } + + private static void EnsureRendererFeatureInstalled() + { + ScriptableRendererData rendererData = AssetDatabase.LoadAssetAtPath(RendererDataPath); + if (rendererData == null) + return; + + if (!rendererData.TryGetRendererFeature(out GlobalAfterimageRendererFeature feature)) + { + feature = ScriptableObject.CreateInstance(); + feature.name = "Global Afterimage Renderer Feature"; + AssetDatabase.AddObjectToAsset(feature, rendererData); + rendererData.rendererFeatures.Add(feature); + rendererData.SetDirty(); + EditorUtility.SetDirty(feature); + EditorUtility.SetDirty(rendererData); + TryValidateRendererFeatures(rendererData); + AssetDatabase.SaveAssets(); + AssetDatabase.ImportAsset(RendererDataPath); + return; + } + + if (feature.renderPassEvent != RenderPassEvent.AfterRenderingPostProcessing) + { + feature.renderPassEvent = RenderPassEvent.AfterRenderingPostProcessing; + rendererData.SetDirty(); + EditorUtility.SetDirty(feature); + EditorUtility.SetDirty(rendererData); + AssetDatabase.SaveAssets(); + } + } + + private static void EnsureVolumeOverrideInstalled() + { + VolumeProfile profile = AssetDatabase.LoadAssetAtPath(GameplayVolumeProfilePath); + if (profile == null) + return; + + RemoveNullVolumeComponents(profile); + + if (profile.TryGet(out _)) + return; + + GlobalAfterimageVolume component = profile.Add(true); + component.active = false; + component.opacity.overrideState = true; + component.opacity.value = 0f; + component.scale.overrideState = true; + component.scale.value = 1.05f; + component.affectSceneView.overrideState = true; + component.affectSceneView.value = false; + EditorUtility.SetDirty(component); + EditorUtility.SetDirty(profile); + AssetDatabase.SaveAssets(); + } + + private static void RemoveNullVolumeComponents(VolumeProfile profile) + { + SerializedObject serializedObject = new SerializedObject(profile); + SerializedProperty componentsProperty = serializedObject.FindProperty("components"); + if (componentsProperty == null || !componentsProperty.isArray) + return; + + bool removed = false; + for (int i = componentsProperty.arraySize - 1; i >= 0; i--) + { + SerializedProperty element = componentsProperty.GetArrayElementAtIndex(i); + if (element.objectReferenceValue != null) + continue; + + componentsProperty.DeleteArrayElementAtIndex(i); + removed = true; + } + + if (!removed) + return; + + serializedObject.ApplyModifiedPropertiesWithoutUndo(); + EditorUtility.SetDirty(profile); + AssetDatabase.SaveAssets(); + } + + private static void TryValidateRendererFeatures(ScriptableRendererData rendererData) + { + MethodInfo validateMethod = typeof(ScriptableRendererData).GetMethod("ValidateRendererFeatures", BindingFlags.Instance | BindingFlags.NonPublic); + validateMethod?.Invoke(rendererData, null); + } + + private static bool IsUnsafeSelectionActive() + { + Object activeObject = Selection.activeObject; + if (activeObject is VolumeProfile || activeObject is Volume) + return true; + + GameObject activeGameObject = Selection.activeGameObject; + if (activeGameObject == null) + return false; + + return activeGameObject.TryGetComponent(out _); + } +} +#endif diff --git a/Assets/scripts/rendering/Editor/GlobalAfterimageInstaller.cs.meta b/Assets/scripts/rendering/Editor/GlobalAfterimageInstaller.cs.meta new file mode 100644 index 00000000..0576a878 --- /dev/null +++ b/Assets/scripts/rendering/Editor/GlobalAfterimageInstaller.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: e5a6ce7542914bd428842b45057360d0 \ No newline at end of file diff --git a/Assets/scripts/rendering/Editor/GlobalDistortionInstaller.cs b/Assets/scripts/rendering/Editor/GlobalDistortionInstaller.cs new file mode 100644 index 00000000..1e991bc8 --- /dev/null +++ b/Assets/scripts/rendering/Editor/GlobalDistortionInstaller.cs @@ -0,0 +1,167 @@ +#if UNITY_EDITOR +using System.Reflection; +using UnityEditor; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; + +[InitializeOnLoad] +public static class GlobalDistortionInstaller +{ + private const string RendererDataPath = "Assets/Settings/Renderer2D.asset"; + private const string GameplayVolumeProfilePath = "Assets/Scenes/gamePlay_gamePlay/gpGV.asset"; + private static bool installScheduled; + + static GlobalDistortionInstaller() + { + ScheduleInstall(); + } + + [MenuItem("Bansonic/Rendering/Install Global Distortion")] + public static void EnsureInstalledMenu() + { + EnsureInstalled(); + } + + private static void ScheduleInstall() + { + if (installScheduled) + return; + + installScheduled = true; + EditorApplication.delayCall += RunScheduledInstall; + } + + private static void RunScheduledInstall() + { + installScheduled = false; + EnsureInstalled(); + } + + private static void EnsureInstalled() + { + if (EditorApplication.isCompiling || BuildPipeline.isBuildingPlayer) + { + ScheduleInstall(); + return; + } + + if (IsUnsafeSelectionActive()) + { + ScheduleInstall(); + return; + } + + EnsureRendererFeatureInstalled(); + EnsureVolumeOverrideInstalled(); + } + + private static void EnsureRendererFeatureInstalled() + { + ScriptableRendererData rendererData = AssetDatabase.LoadAssetAtPath(RendererDataPath); + if (rendererData == null) + return; + + if (!rendererData.TryGetRendererFeature(out GlobalDistortionRendererFeature feature)) + { + feature = ScriptableObject.CreateInstance(); + feature.name = "Global Distortion Renderer Feature"; + AssetDatabase.AddObjectToAsset(feature, rendererData); + rendererData.rendererFeatures.Add(feature); + rendererData.SetDirty(); + EditorUtility.SetDirty(feature); + EditorUtility.SetDirty(rendererData); + TryValidateRendererFeatures(rendererData); + AssetDatabase.SaveAssets(); + AssetDatabase.ImportAsset(RendererDataPath); + return; + } + + if (feature.renderPassEvent != RenderPassEvent.AfterRenderingPostProcessing) + { + feature.renderPassEvent = RenderPassEvent.AfterRenderingPostProcessing; + rendererData.SetDirty(); + EditorUtility.SetDirty(feature); + EditorUtility.SetDirty(rendererData); + AssetDatabase.SaveAssets(); + } + } + + private static void EnsureVolumeOverrideInstalled() + { + VolumeProfile profile = AssetDatabase.LoadAssetAtPath(GameplayVolumeProfilePath); + if (profile == null) + return; + + RemoveNullVolumeComponents(profile); + + if (profile.TryGet(out _)) + return; + + GlobalDistortionVolume component = profile.Add(true); + component.active = false; + component.intensity.overrideState = true; + component.intensity.value = 0f; + component.noiseStrength.overrideState = true; + component.noiseStrength.value = 0.16f; + component.radialStrength.overrideState = true; + component.radialStrength.value = 0.35f; + component.noiseScale.overrideState = true; + component.noiseScale.value = 12f; + component.center.overrideState = true; + component.center.value = new Vector2(0.5f, 0.5f); + component.edgeFade.overrideState = true; + component.edgeFade.value = 1.25f; + component.affectSceneView.overrideState = true; + component.affectSceneView.value = false; + EditorUtility.SetDirty(component); + EditorUtility.SetDirty(profile); + AssetDatabase.SaveAssets(); + } + + private static void RemoveNullVolumeComponents(VolumeProfile profile) + { + SerializedObject serializedObject = new SerializedObject(profile); + SerializedProperty componentsProperty = serializedObject.FindProperty("components"); + if (componentsProperty == null || !componentsProperty.isArray) + return; + + bool removed = false; + for (int i = componentsProperty.arraySize - 1; i >= 0; i--) + { + SerializedProperty element = componentsProperty.GetArrayElementAtIndex(i); + if (element.objectReferenceValue != null) + continue; + + componentsProperty.DeleteArrayElementAtIndex(i); + removed = true; + } + + if (!removed) + return; + + serializedObject.ApplyModifiedPropertiesWithoutUndo(); + EditorUtility.SetDirty(profile); + AssetDatabase.SaveAssets(); + } + + private static void TryValidateRendererFeatures(ScriptableRendererData rendererData) + { + MethodInfo validateMethod = typeof(ScriptableRendererData).GetMethod("ValidateRendererFeatures", BindingFlags.Instance | BindingFlags.NonPublic); + validateMethod?.Invoke(rendererData, null); + } + + private static bool IsUnsafeSelectionActive() + { + Object activeObject = Selection.activeObject; + if (activeObject is VolumeProfile || activeObject is Volume) + return true; + + GameObject activeGameObject = Selection.activeGameObject; + if (activeGameObject == null) + return false; + + return activeGameObject.TryGetComponent(out _); + } +} +#endif diff --git a/Assets/scripts/rendering/Editor/GlobalDistortionInstaller.cs.meta b/Assets/scripts/rendering/Editor/GlobalDistortionInstaller.cs.meta new file mode 100644 index 00000000..9ead5735 --- /dev/null +++ b/Assets/scripts/rendering/Editor/GlobalDistortionInstaller.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 8da344594051c8647abdb52bec165007 \ No newline at end of file diff --git a/Assets/scripts/rendering/Editor/GlobalGlitchInstaller.cs b/Assets/scripts/rendering/Editor/GlobalGlitchInstaller.cs new file mode 100644 index 00000000..c7e3de68 --- /dev/null +++ b/Assets/scripts/rendering/Editor/GlobalGlitchInstaller.cs @@ -0,0 +1,167 @@ +#if UNITY_EDITOR +using System.Reflection; +using UnityEditor; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; + +[InitializeOnLoad] +public static class GlobalGlitchInstaller +{ + private const string RendererDataPath = "Assets/Settings/Renderer2D.asset"; + private const string GameplayVolumeProfilePath = "Assets/Scenes/gamePlay_gamePlay/gpGV.asset"; + private static bool installScheduled; + + static GlobalGlitchInstaller() + { + ScheduleInstall(); + } + + [MenuItem("Bansonic/Rendering/Install Global Glitch")] + public static void EnsureInstalledMenu() + { + EnsureInstalled(); + } + + private static void ScheduleInstall() + { + if (installScheduled) + return; + + installScheduled = true; + EditorApplication.delayCall += RunScheduledInstall; + } + + private static void RunScheduledInstall() + { + installScheduled = false; + EnsureInstalled(); + } + + private static void EnsureInstalled() + { + if (EditorApplication.isCompiling || BuildPipeline.isBuildingPlayer) + { + ScheduleInstall(); + return; + } + + if (IsUnsafeSelectionActive()) + { + ScheduleInstall(); + return; + } + + EnsureRendererFeatureInstalled(); + EnsureVolumeOverrideInstalled(); + } + + private static void EnsureRendererFeatureInstalled() + { + ScriptableRendererData rendererData = AssetDatabase.LoadAssetAtPath(RendererDataPath); + if (rendererData == null) + return; + + if (!rendererData.TryGetRendererFeature(out GlobalGlitchRendererFeature feature)) + { + feature = ScriptableObject.CreateInstance(); + feature.name = "Global Glitch Renderer Feature"; + AssetDatabase.AddObjectToAsset(feature, rendererData); + rendererData.rendererFeatures.Add(feature); + rendererData.SetDirty(); + EditorUtility.SetDirty(feature); + EditorUtility.SetDirty(rendererData); + TryValidateRendererFeatures(rendererData); + AssetDatabase.SaveAssets(); + AssetDatabase.ImportAsset(RendererDataPath); + return; + } + + if (feature.renderPassEvent != RenderPassEvent.AfterRenderingPostProcessing) + { + feature.renderPassEvent = RenderPassEvent.AfterRenderingPostProcessing; + rendererData.SetDirty(); + EditorUtility.SetDirty(feature); + EditorUtility.SetDirty(rendererData); + AssetDatabase.SaveAssets(); + } + } + + private static void EnsureVolumeOverrideInstalled() + { + VolumeProfile profile = AssetDatabase.LoadAssetAtPath(GameplayVolumeProfilePath); + if (profile == null) + return; + + RemoveNullVolumeComponents(profile); + + if (profile.TryGet(out _)) + return; + + GlobalGlitchVolume component = profile.Add(true); + component.active = false; + component.intensity.overrideState = true; + component.intensity.value = 0f; + component.blockStrength.overrideState = true; + component.blockStrength.value = 0.45f; + component.colorSplit.overrideState = true; + component.colorSplit.value = 0.01f; + component.jitterAmount.overrideState = true; + component.jitterAmount.value = 0.4f; + component.stripFrequency.overrideState = true; + component.stripFrequency.value = 48f; + component.scanlineStrength.overrideState = true; + component.scanlineStrength.value = 0.18f; + component.affectSceneView.overrideState = true; + component.affectSceneView.value = false; + EditorUtility.SetDirty(component); + EditorUtility.SetDirty(profile); + AssetDatabase.SaveAssets(); + } + + private static void RemoveNullVolumeComponents(VolumeProfile profile) + { + SerializedObject serializedObject = new SerializedObject(profile); + SerializedProperty componentsProperty = serializedObject.FindProperty("components"); + if (componentsProperty == null || !componentsProperty.isArray) + return; + + bool removed = false; + for (int i = componentsProperty.arraySize - 1; i >= 0; i--) + { + SerializedProperty element = componentsProperty.GetArrayElementAtIndex(i); + if (element.objectReferenceValue != null) + continue; + + componentsProperty.DeleteArrayElementAtIndex(i); + removed = true; + } + + if (!removed) + return; + + serializedObject.ApplyModifiedPropertiesWithoutUndo(); + EditorUtility.SetDirty(profile); + AssetDatabase.SaveAssets(); + } + + private static void TryValidateRendererFeatures(ScriptableRendererData rendererData) + { + MethodInfo validateMethod = typeof(ScriptableRendererData).GetMethod("ValidateRendererFeatures", BindingFlags.Instance | BindingFlags.NonPublic); + validateMethod?.Invoke(rendererData, null); + } + + private static bool IsUnsafeSelectionActive() + { + Object activeObject = Selection.activeObject; + if (activeObject is VolumeProfile || activeObject is Volume) + return true; + + GameObject activeGameObject = Selection.activeGameObject; + if (activeGameObject == null) + return false; + + return activeGameObject.TryGetComponent(out _); + } +} +#endif diff --git a/Assets/scripts/rendering/Editor/GlobalGlitchInstaller.cs.meta b/Assets/scripts/rendering/Editor/GlobalGlitchInstaller.cs.meta new file mode 100644 index 00000000..c1d6e3b6 --- /dev/null +++ b/Assets/scripts/rendering/Editor/GlobalGlitchInstaller.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: f7effde50fff3c34c8c188a696cf3bcf \ No newline at end of file diff --git a/Assets/scripts/rendering/Editor/GlobalMonochromeInstaller.cs b/Assets/scripts/rendering/Editor/GlobalMonochromeInstaller.cs new file mode 100644 index 00000000..4bc8e7b9 --- /dev/null +++ b/Assets/scripts/rendering/Editor/GlobalMonochromeInstaller.cs @@ -0,0 +1,157 @@ +#if UNITY_EDITOR +using System.Reflection; +using UnityEditor; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; + +[InitializeOnLoad] +public static class GlobalMonochromeInstaller +{ + private const string RendererDataPath = "Assets/Settings/Renderer2D.asset"; + private const string GameplayVolumeProfilePath = "Assets/Scenes/gamePlay_gamePlay/gpGV.asset"; + private static bool installScheduled; + + static GlobalMonochromeInstaller() + { + ScheduleInstall(); + } + + [MenuItem("Bansonic/Rendering/Install Global Monochrome")] + public static void EnsureInstalledMenu() + { + EnsureInstalled(); + } + + private static void ScheduleInstall() + { + if (installScheduled) + return; + + installScheduled = true; + EditorApplication.delayCall += RunScheduledInstall; + } + + private static void RunScheduledInstall() + { + installScheduled = false; + EnsureInstalled(); + } + + private static void EnsureInstalled() + { + if (EditorApplication.isCompiling || BuildPipeline.isBuildingPlayer) + { + ScheduleInstall(); + return; + } + + if (IsUnsafeSelectionActive()) + { + ScheduleInstall(); + return; + } + + EnsureRendererFeatureInstalled(); + EnsureVolumeOverrideInstalled(); + } + + private static void EnsureRendererFeatureInstalled() + { + ScriptableRendererData rendererData = AssetDatabase.LoadAssetAtPath(RendererDataPath); + if (rendererData == null) + return; + + if (!rendererData.TryGetRendererFeature(out GlobalMonochromeRendererFeature feature)) + { + feature = ScriptableObject.CreateInstance(); + feature.name = "Global Monochrome Renderer Feature"; + AssetDatabase.AddObjectToAsset(feature, rendererData); + rendererData.rendererFeatures.Add(feature); + rendererData.SetDirty(); + EditorUtility.SetDirty(feature); + EditorUtility.SetDirty(rendererData); + TryValidateRendererFeatures(rendererData); + AssetDatabase.SaveAssets(); + AssetDatabase.ImportAsset(RendererDataPath); + return; + } + + if (feature.renderPassEvent != RenderPassEvent.AfterRenderingPostProcessing) + { + feature.renderPassEvent = RenderPassEvent.AfterRenderingPostProcessing; + rendererData.SetDirty(); + EditorUtility.SetDirty(feature); + EditorUtility.SetDirty(rendererData); + AssetDatabase.SaveAssets(); + } + } + + private static void EnsureVolumeOverrideInstalled() + { + VolumeProfile profile = AssetDatabase.LoadAssetAtPath(GameplayVolumeProfilePath); + if (profile == null) + return; + + RemoveNullVolumeComponents(profile); + + if (profile.TryGet(out _)) + return; + + GlobalMonochromeVolume component = profile.Add(true); + component.active = false; + component.intensity.overrideState = true; + component.intensity.value = 0f; + component.affectSceneView.overrideState = true; + component.affectSceneView.value = false; + EditorUtility.SetDirty(component); + EditorUtility.SetDirty(profile); + AssetDatabase.SaveAssets(); + } + + private static void RemoveNullVolumeComponents(VolumeProfile profile) + { + SerializedObject serializedObject = new SerializedObject(profile); + SerializedProperty componentsProperty = serializedObject.FindProperty("components"); + if (componentsProperty == null || !componentsProperty.isArray) + return; + + bool removed = false; + for (int i = componentsProperty.arraySize - 1; i >= 0; i--) + { + SerializedProperty element = componentsProperty.GetArrayElementAtIndex(i); + if (element.objectReferenceValue != null) + continue; + + componentsProperty.DeleteArrayElementAtIndex(i); + removed = true; + } + + if (!removed) + return; + + serializedObject.ApplyModifiedPropertiesWithoutUndo(); + EditorUtility.SetDirty(profile); + AssetDatabase.SaveAssets(); + } + + private static void TryValidateRendererFeatures(ScriptableRendererData rendererData) + { + MethodInfo validateMethod = typeof(ScriptableRendererData).GetMethod("ValidateRendererFeatures", BindingFlags.Instance | BindingFlags.NonPublic); + validateMethod?.Invoke(rendererData, null); + } + + private static bool IsUnsafeSelectionActive() + { + Object activeObject = Selection.activeObject; + if (activeObject is VolumeProfile || activeObject is Volume) + return true; + + GameObject activeGameObject = Selection.activeGameObject; + if (activeGameObject == null) + return false; + + return activeGameObject.TryGetComponent(out _); + } +} +#endif diff --git a/Assets/scripts/rendering/Editor/GlobalMonochromeInstaller.cs.meta b/Assets/scripts/rendering/Editor/GlobalMonochromeInstaller.cs.meta new file mode 100644 index 00000000..c648b59d --- /dev/null +++ b/Assets/scripts/rendering/Editor/GlobalMonochromeInstaller.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 9530a18d124454244a6fc70d833e3182 \ No newline at end of file diff --git a/Assets/scripts/rendering/GlobalAfterimageRendererFeature.cs b/Assets/scripts/rendering/GlobalAfterimageRendererFeature.cs new file mode 100644 index 00000000..876e5113 --- /dev/null +++ b/Assets/scripts/rendering/GlobalAfterimageRendererFeature.cs @@ -0,0 +1,178 @@ +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.RenderGraphModule; +using UnityEngine.Rendering.RenderGraphModule.Util; +using UnityEngine.Rendering.Universal; + +public class GlobalAfterimageRendererFeature : ScriptableRendererFeature +{ + [Tooltip("When the custom afterimage pass should execute.")] + public RenderPassEvent renderPassEvent = RenderPassEvent.AfterRenderingPostProcessing; + + private Material material; + private GlobalAfterimagePass pass; + + public override void Create() + { + if (pass == null) + pass = new GlobalAfterimagePass(); + + pass.renderPassEvent = renderPassEvent; + EnsureMaterial(); + } + + public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) + { + if (!EnsureMaterial()) + return; + + Camera camera = renderingData.cameraData.camera; + if (camera == null) + return; + + if (renderingData.cameraData.cameraType == CameraType.Preview || renderingData.cameraData.cameraType == CameraType.Reflection) + return; + + if (!renderingData.cameraData.postProcessEnabled) + return; + + GlobalAfterimageVolume settings = VolumeManager.instance.stack.GetComponent(); + bool hasVolume = settings != null && settings.active; + float runtimeOpacity = GlobalAfterimageRuntimeController.RuntimeOpacity; + float baseOpacity = hasVolume ? settings.opacity.value : 0f; + float finalOpacity = Mathf.Clamp01(Mathf.Max(baseOpacity, runtimeOpacity)); + if (finalOpacity <= 0.0001f) + return; + + if (camera.cameraType == CameraType.SceneView && hasVolume && !settings.affectSceneView.value) + return; + + float runtimeScale = Mathf.Max(1f, GlobalAfterimageRuntimeController.RuntimeScale); + float baseScale = hasVolume ? settings.scale.value : 1.05f; + float finalScale = Mathf.Max(baseScale, runtimeScale); + bool captureRequested = GlobalAfterimageRuntimeController.ConsumeCaptureRequest(); + + pass.Setup(material, finalOpacity, finalScale, captureRequested, renderingData.cameraData.cameraTargetDescriptor); + renderer.EnqueuePass(pass); + } + + protected override void Dispose(bool disposing) + { + if (pass != null) + { + pass.Dispose(); + pass = null; + } + + if (material != null) + { + CoreUtils.Destroy(material); + material = null; + } + } + + private bool EnsureMaterial() + { + if (material != null) + return true; + + Shader shader = Shader.Find("Hidden/Bansonic/GlobalAfterimage"); + if (shader == null) + return false; + + material = CoreUtils.CreateEngineMaterial(shader); + return material != null; + } + + private sealed class GlobalAfterimagePass : ScriptableRenderPass + { + private static readonly int OpacityId = Shader.PropertyToID("_AfterimageOpacity"); + private static readonly int ScaleId = Shader.PropertyToID("_AfterimageScale"); + private static readonly int SnapshotTexId = Shader.PropertyToID("_SnapshotTex"); + + private Material passMaterial; + private float opacity; + private float scale; + private bool captureRequested; + private RenderTextureDescriptor descriptor; + private RTHandle compatibilityCopy; + private RTHandle snapshotTexture; + + public void Setup(Material material, float passOpacity, float passScale, bool passCaptureRequested, RenderTextureDescriptor targetDescriptor) + { + passMaterial = material; + opacity = passOpacity; + scale = Mathf.Max(1f, passScale); + captureRequested = passCaptureRequested; + descriptor = targetDescriptor; + descriptor.msaaSamples = 1; + descriptor.depthBufferBits = 0; + requiresIntermediateTexture = true; + RenderingUtils.ReAllocateHandleIfNeeded(ref snapshotTexture, descriptor, FilterMode.Bilinear, TextureWrapMode.Clamp, name: "_GlobalAfterimageSnapshot"); + } + + public void Dispose() + { + compatibilityCopy?.Release(); + compatibilityCopy = null; + snapshotTexture?.Release(); + snapshotTexture = null; + } + + public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData) + { + if (passMaterial == null || snapshotTexture == null) + return; + + UniversalResourceData resourceData = frameData.Get(); + if (resourceData.isActiveTargetBackBuffer) + return; + + ApplyMaterialProperties(); + + TextureHandle source = resourceData.activeColorTexture; + TextureHandle importedSnapshot = renderGraph.ImportTexture(snapshotTexture); + if (captureRequested) + { + renderGraph.AddBlitPass(source, importedSnapshot, Vector2.one, Vector2.zero, passName: "Global Afterimage Capture"); + } + + TextureDesc tempDesc = renderGraph.GetTextureDesc(source); + tempDesc.name = "CameraColor-GlobalAfterimageTemp"; + tempDesc.clearBuffer = false; + TextureHandle tempTexture = renderGraph.CreateTexture(tempDesc); + + RenderGraphUtils.BlitMaterialParameters effectParameters = new(source, tempTexture, passMaterial, 0); + renderGraph.AddBlitPass(effectParameters, passName: "Global Afterimage Effect"); + renderGraph.AddBlitPass(tempTexture, resourceData.activeColorTexture, Vector2.one, Vector2.zero, passName: "Global Afterimage Restore"); + } + + public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) + { + if (passMaterial == null || snapshotTexture == null) + return; + + ApplyMaterialProperties(); + RenderingUtils.ReAllocateHandleIfNeeded(ref compatibilityCopy, descriptor, FilterMode.Bilinear, TextureWrapMode.Clamp, name: "_GlobalAfterimageCompatibilityCopy"); + + CommandBuffer cmd = CommandBufferPool.Get("Global Afterimage Pass"); + if (captureRequested) + { + Blitter.BlitCameraTexture(cmd, renderingData.cameraData.renderer.cameraColorTargetHandle, snapshotTexture); + } + + Blitter.BlitCameraTexture(cmd, renderingData.cameraData.renderer.cameraColorTargetHandle, compatibilityCopy); + Blitter.BlitCameraTexture(cmd, compatibilityCopy, renderingData.cameraData.renderer.cameraColorTargetHandle, passMaterial, 0); + context.ExecuteCommandBuffer(cmd); + CommandBufferPool.Release(cmd); + } + + private void ApplyMaterialProperties() + { + passMaterial.SetFloat(OpacityId, opacity); + passMaterial.SetFloat(ScaleId, scale); + if (snapshotTexture != null) + passMaterial.SetTexture(SnapshotTexId, snapshotTexture); + } + } +} diff --git a/Assets/scripts/rendering/GlobalAfterimageRendererFeature.cs.meta b/Assets/scripts/rendering/GlobalAfterimageRendererFeature.cs.meta new file mode 100644 index 00000000..6c04395d --- /dev/null +++ b/Assets/scripts/rendering/GlobalAfterimageRendererFeature.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: a28c239b9c2736e489a75bd286167cb9 \ No newline at end of file diff --git a/Assets/scripts/rendering/GlobalAfterimageRuntimeController.cs b/Assets/scripts/rendering/GlobalAfterimageRuntimeController.cs new file mode 100644 index 00000000..12f50d2e --- /dev/null +++ b/Assets/scripts/rendering/GlobalAfterimageRuntimeController.cs @@ -0,0 +1,125 @@ +using UnityEngine; + +public class GlobalAfterimageRuntimeController : MonoBehaviour +{ + public static GlobalAfterimageRuntimeController Instance { get; private set; } + + [Header("Runtime Afterimage Defaults")] + public float defaultStartOpacity = 0.5f; + public float defaultFadeDuration = 0.22f; + public float defaultEndScale = 1.12f; + public bool useUnscaledTime = true; + public bool triggerOnEnable = false; + + private static float sRuntimeOpacity; + private static float sRuntimeScale = 1f; + private static bool sCaptureRequested; + + private float activeStartOpacity; + private float activeFadeDuration; + private float activeEndScale = 1f; + private float activeElapsed; + private bool activeAfterimage; + + public static float RuntimeOpacity => sRuntimeOpacity; + public static float RuntimeScale => sRuntimeScale; + public static bool HasActiveAfterimage => sRuntimeOpacity > 0.0001f; + + private void Awake() + { + if (Instance == null) + { + Instance = this; + return; + } + + if (Instance != this) + Destroy(gameObject); + } + + private void OnEnable() + { + if (triggerOnEnable) + TriggerAfterimage(); + } + + private void Update() + { + float delta = useUnscaledTime ? Time.unscaledDeltaTime : Time.deltaTime; + UpdateAfterimage(delta); + } + + public void TriggerAfterimage() + { + TriggerAfterimage(defaultStartOpacity, defaultFadeDuration, defaultEndScale); + } + + public void TriggerAfterimage(float startOpacity, float fadeDuration, float endScale) + { + activeStartOpacity = Mathf.Clamp01(startOpacity); + activeFadeDuration = Mathf.Max(0.0001f, fadeDuration); + activeEndScale = Mathf.Max(1f, endScale); + activeElapsed = 0f; + activeAfterimage = activeStartOpacity > 0.0001f; + + sRuntimeOpacity = activeStartOpacity; + sRuntimeScale = 1f; + sCaptureRequested = activeAfterimage; + } + + private void UpdateAfterimage(float delta) + { + if (!activeAfterimage) + { + sRuntimeOpacity = 0f; + sRuntimeScale = 1f; + return; + } + + activeElapsed += delta; + float normalized = Mathf.Clamp01(activeElapsed / activeFadeDuration); + sRuntimeOpacity = Mathf.Lerp(activeStartOpacity, 0f, normalized); + sRuntimeScale = Mathf.Lerp(1f, activeEndScale, normalized); + + if (normalized < 1f) + return; + + activeAfterimage = false; + sRuntimeOpacity = 0f; + sRuntimeScale = 1f; + } + + public static bool ConsumeCaptureRequest() + { + bool requested = sCaptureRequested; + sCaptureRequested = false; + return requested; + } + + public static GlobalAfterimageRuntimeController EnsureInstance() + { + if (Instance != null) + return Instance; + + GlobalAfterimageRuntimeController existing = FindFirstObjectByType(); + if (existing != null) + { + Instance = existing; + return existing; + } + + GameObject runtimeObject = new GameObject("__global_afterimage_runtime"); + Instance = runtimeObject.AddComponent(); + return Instance; + } + + public static void Trigger(float startOpacity, float fadeDuration, float endScale) + { + EnsureInstance().TriggerAfterimage(startOpacity, fadeDuration, endScale); + } + + public static void TriggerDefault() + { + EnsureInstance().TriggerAfterimage(); + } +} diff --git a/Assets/scripts/rendering/GlobalAfterimageRuntimeController.cs.meta b/Assets/scripts/rendering/GlobalAfterimageRuntimeController.cs.meta new file mode 100644 index 00000000..6cacef5e --- /dev/null +++ b/Assets/scripts/rendering/GlobalAfterimageRuntimeController.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: e0fcba34ceffcf34daf70334648d161f \ No newline at end of file diff --git a/Assets/scripts/rendering/GlobalAfterimageVolume.cs b/Assets/scripts/rendering/GlobalAfterimageVolume.cs new file mode 100644 index 00000000..848ae80c --- /dev/null +++ b/Assets/scripts/rendering/GlobalAfterimageVolume.cs @@ -0,0 +1,24 @@ +using System; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; + +[Serializable] +[VolumeComponentMenu("Post-processing/Bansonic/Global Afterimage")] +[SupportedOnRenderPipeline(typeof(UniversalRenderPipelineAsset))] +public sealed class GlobalAfterimageVolume : VolumeComponent, IPostProcessComponent +{ + [Tooltip("Base afterimage opacity from the volume profile.")] + public ClampedFloatParameter opacity = new ClampedFloatParameter(0f, 0f, 1f); + + [Tooltip("Scale multiplier of the copied image.")] + public ClampedFloatParameter scale = new ClampedFloatParameter(1.05f, 1f, 2f); + + [Tooltip("Whether this effect should run in SceneView cameras.")] + public BoolParameter affectSceneView = new BoolParameter(false); + + public bool IsActive() => opacity.value > 0.0001f; + + [Obsolete("Unused #from(2023.1)", false)] + public bool IsTileCompatible() => false; +} diff --git a/Assets/scripts/rendering/GlobalAfterimageVolume.cs.meta b/Assets/scripts/rendering/GlobalAfterimageVolume.cs.meta new file mode 100644 index 00000000..01259993 --- /dev/null +++ b/Assets/scripts/rendering/GlobalAfterimageVolume.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 2b5b0fcb28cb9254bbcd2a498e0fe228 \ No newline at end of file diff --git a/Assets/scripts/rendering/GlobalDistortionRendererFeature.cs b/Assets/scripts/rendering/GlobalDistortionRendererFeature.cs new file mode 100644 index 00000000..d035ebcb --- /dev/null +++ b/Assets/scripts/rendering/GlobalDistortionRendererFeature.cs @@ -0,0 +1,185 @@ +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.RenderGraphModule; +using UnityEngine.Rendering.RenderGraphModule.Util; +using UnityEngine.Rendering.Universal; + +public class GlobalDistortionRendererFeature : ScriptableRendererFeature +{ + [Tooltip("When the custom distortion pass should execute.")] + public RenderPassEvent renderPassEvent = RenderPassEvent.AfterRenderingPostProcessing; + + private Material material; + private GlobalDistortionPass pass; + + public override void Create() + { + if (pass == null) + pass = new GlobalDistortionPass(); + + pass.renderPassEvent = renderPassEvent; + EnsureMaterial(); + } + + public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) + { + if (!EnsureMaterial()) + return; + + Camera camera = renderingData.cameraData.camera; + if (camera == null) + return; + + if (renderingData.cameraData.cameraType == CameraType.Preview || renderingData.cameraData.cameraType == CameraType.Reflection) + return; + + if (!renderingData.cameraData.postProcessEnabled) + return; + + GlobalDistortionVolume settings = VolumeManager.instance.stack.GetComponent(); + bool hasVolume = settings != null && settings.active; + float runtimeIntensity = GlobalDistortionRuntimeController.RuntimeIntensity; + float baseIntensity = hasVolume ? settings.intensity.value : 0f; + float finalIntensity = Mathf.Clamp01(baseIntensity + runtimeIntensity); + if (finalIntensity <= 0.0001f) + return; + + if (camera.cameraType == CameraType.SceneView && hasVolume && !settings.affectSceneView.value) + return; + + pass.Setup( + material, + finalIntensity, + hasVolume ? settings.noiseStrength.value : 0.16f, + hasVolume ? settings.radialStrength.value : 0.35f, + hasVolume ? settings.noiseScale.value : 12f, + hasVolume ? settings.center.value : new Vector2(0.5f, 0.5f), + hasVolume ? settings.edgeFade.value : 1.25f + ); + + renderer.EnqueuePass(pass); + } + + protected override void Dispose(bool disposing) + { + if (pass != null) + { + pass.Dispose(); + pass = null; + } + + if (material != null) + { + CoreUtils.Destroy(material); + material = null; + } + } + + private bool EnsureMaterial() + { + if (material != null) + return true; + + Shader shader = Shader.Find("Hidden/Bansonic/GlobalDistortion"); + if (shader == null) + return false; + + material = CoreUtils.CreateEngineMaterial(shader); + return material != null; + } + + private sealed class GlobalDistortionPass : ScriptableRenderPass + { + private static readonly int IntensityId = Shader.PropertyToID("_DistortionIntensity"); + private static readonly int NoiseStrengthId = Shader.PropertyToID("_NoiseStrength"); + private static readonly int RadialStrengthId = Shader.PropertyToID("_RadialStrength"); + private static readonly int NoiseScaleId = Shader.PropertyToID("_NoiseScale"); + private static readonly int CenterId = Shader.PropertyToID("_DistortionCenter"); + private static readonly int EdgeFadeId = Shader.PropertyToID("_EdgeFade"); + + private Material passMaterial; + private float intensity; + private float noiseStrength; + private float radialStrength; + private float noiseScale; + private Vector2 center; + private float edgeFade; + private RTHandle compatibilityCopy; + + public void Setup(Material material, float passIntensity, float passNoiseStrength, float passRadialStrength, float passNoiseScale, Vector2 passCenter, float passEdgeFade) + { + passMaterial = material; + intensity = passIntensity; + noiseStrength = passNoiseStrength; + radialStrength = passRadialStrength; + noiseScale = passNoiseScale; + center = passCenter; + edgeFade = passEdgeFade; + requiresIntermediateTexture = true; + } + + public void Dispose() + { + compatibilityCopy?.Release(); + compatibilityCopy = null; + } + + public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData) + { + if (passMaterial == null) + return; + + UniversalResourceData resourceData = frameData.Get(); + if (resourceData.isActiveTargetBackBuffer) + return; + + ApplyMaterialProperties(); + + TextureHandle source = resourceData.activeColorTexture; + TextureDesc tempDesc = renderGraph.GetTextureDesc(source); + tempDesc.name = "CameraColor-GlobalDistortionTemp"; + tempDesc.clearBuffer = false; + + TextureHandle tempTexture = renderGraph.CreateTexture(tempDesc); + RenderGraphUtils.BlitMaterialParameters effectParameters = new(source, tempTexture, passMaterial, 0); + renderGraph.AddBlitPass(effectParameters, passName: "Global Distortion Effect"); + + renderGraph.AddBlitPass( + tempTexture, + resourceData.activeColorTexture, + Vector2.one, + Vector2.zero, + passName: "Global Distortion Restore" + ); + } + + public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) + { + if (passMaterial == null) + return; + + ApplyMaterialProperties(); + + RenderTextureDescriptor descriptor = renderingData.cameraData.cameraTargetDescriptor; + descriptor.msaaSamples = 1; + descriptor.depthBufferBits = 0; + RenderingUtils.ReAllocateHandleIfNeeded(ref compatibilityCopy, descriptor, FilterMode.Bilinear, TextureWrapMode.Clamp, name: "_GlobalDistortionCompatibilityCopy"); + + CommandBuffer cmd = CommandBufferPool.Get("Global Distortion Pass"); + Blitter.BlitCameraTexture(cmd, renderingData.cameraData.renderer.cameraColorTargetHandle, compatibilityCopy); + Blitter.BlitCameraTexture(cmd, compatibilityCopy, renderingData.cameraData.renderer.cameraColorTargetHandle, passMaterial, 0); + context.ExecuteCommandBuffer(cmd); + CommandBufferPool.Release(cmd); + } + + private void ApplyMaterialProperties() + { + passMaterial.SetFloat(IntensityId, intensity); + passMaterial.SetFloat(NoiseStrengthId, noiseStrength); + passMaterial.SetFloat(RadialStrengthId, radialStrength); + passMaterial.SetFloat(NoiseScaleId, noiseScale); + passMaterial.SetVector(CenterId, center); + passMaterial.SetFloat(EdgeFadeId, edgeFade); + } + } +} diff --git a/Assets/scripts/rendering/GlobalDistortionRendererFeature.cs.meta b/Assets/scripts/rendering/GlobalDistortionRendererFeature.cs.meta new file mode 100644 index 00000000..9503f772 --- /dev/null +++ b/Assets/scripts/rendering/GlobalDistortionRendererFeature.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: d71f5b59ebb9a7640b177e16adf3d6c7 \ No newline at end of file diff --git a/Assets/scripts/rendering/GlobalDistortionRuntimeController.cs b/Assets/scripts/rendering/GlobalDistortionRuntimeController.cs new file mode 100644 index 00000000..42855362 --- /dev/null +++ b/Assets/scripts/rendering/GlobalDistortionRuntimeController.cs @@ -0,0 +1,238 @@ +using UnityEngine; + +public class GlobalDistortionRuntimeController : MonoBehaviour +{ + public static GlobalDistortionRuntimeController Instance { get; private set; } + + [Header("Runtime Distortion Defaults")] + public float defaultTriggerIntensity = 0.45f; + public float defaultHoldDuration = 0.06f; + public float defaultRecoverDuration = 0.18f; + public AnimationCurve recoveryCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); + public bool useUnscaledTime = true; + public bool triggerOnEnable = false; + + private static float sPersistentIntensity; + private static float sPulseIntensity; + private static float sWaveIntensity; + + private float activePulseIntensity; + private float holdRemaining; + private float recoverElapsed; + private float recoverDuration; + private bool recovering; + + private float waveTargetIntensity; + private float waveEnterDuration; + private float waveRecoverDuration; + private float waveElapsed; + private WavePhase wavePhase = WavePhase.None; + + public static float RuntimeIntensity => Mathf.Clamp01(sPersistentIntensity + sPulseIntensity + sWaveIntensity); + + private enum WavePhase + { + None, + Enter, + Exit + } + + private void Awake() + { + if (Instance == null) + { + Instance = this; + return; + } + + if (Instance != this) + { + Destroy(gameObject); + } + } + + private void OnEnable() + { + if (triggerOnEnable) + { + TriggerDistortion(); + } + } + + private void Update() + { + float delta = useUnscaledTime ? Time.unscaledDeltaTime : Time.deltaTime; + UpdatePulse(delta); + UpdateWave(delta); + } + + public void TriggerDistortion() + { + TriggerDistortion(defaultTriggerIntensity, defaultHoldDuration, defaultRecoverDuration); + } + + public void TriggerDistortion(float intensity, float holdDuration, float recoveryDurationSeconds) + { + intensity = Mathf.Clamp01(intensity); + holdDuration = Mathf.Max(0f, holdDuration); + recoveryDurationSeconds = Mathf.Max(0f, recoveryDurationSeconds); + + activePulseIntensity = intensity; + holdRemaining = holdDuration; + recoverDuration = recoveryDurationSeconds; + recoverElapsed = 0f; + recovering = recoveryDurationSeconds <= 0f && holdDuration <= 0f; + sPulseIntensity = intensity; + + if (holdDuration <= 0f && recoveryDurationSeconds <= 0f) + { + activePulseIntensity = 0f; + sPulseIntensity = 0f; + recovering = false; + } + } + + public void SetPersistentIntensity(float intensity) + { + sPersistentIntensity = Mathf.Clamp01(intensity); + } + + public void ClearPersistentIntensity() + { + sPersistentIntensity = 0f; + } + + public void TriggerWave(float targetIntensity, float enterDurationSeconds, float recoverDurationSeconds) + { + waveTargetIntensity = Mathf.Clamp01(targetIntensity); + waveEnterDuration = Mathf.Max(0.0001f, enterDurationSeconds); + waveRecoverDuration = Mathf.Max(0.0001f, recoverDurationSeconds); + waveElapsed = 0f; + wavePhase = WavePhase.Enter; + sWaveIntensity = 0f; + } + + private void UpdatePulse(float delta) + { + if (activePulseIntensity <= 0f && !recovering) + { + sPulseIntensity = 0f; + return; + } + + if (holdRemaining > 0f) + { + holdRemaining -= delta; + sPulseIntensity = activePulseIntensity; + if (holdRemaining > 0f) + return; + + recovering = recoverDuration > 0f; + recoverElapsed = 0f; + if (!recovering) + { + activePulseIntensity = 0f; + sPulseIntensity = 0f; + return; + } + } + + if (!recovering) + { + activePulseIntensity = 0f; + sPulseIntensity = 0f; + return; + } + + recoverElapsed += delta; + float normalized = recoverDuration <= 0f ? 1f : Mathf.Clamp01(recoverElapsed / recoverDuration); + float curveValue = recoveryCurve != null && recoveryCurve.length > 0 + ? recoveryCurve.Evaluate(normalized) + : 1f - normalized; + + sPulseIntensity = Mathf.Clamp01(activePulseIntensity * Mathf.Max(0f, curveValue)); + if (normalized < 1f) + return; + + recovering = false; + activePulseIntensity = 0f; + sPulseIntensity = 0f; + } + + private void UpdateWave(float delta) + { + if (wavePhase == WavePhase.None) + { + sWaveIntensity = 0f; + return; + } + + waveElapsed += delta; + + if (wavePhase == WavePhase.Enter) + { + float normalized = Mathf.Clamp01(waveElapsed / waveEnterDuration); + sWaveIntensity = Mathf.LerpUnclamped(0f, waveTargetIntensity, normalized); + if (normalized < 1f) + return; + + sWaveIntensity = waveTargetIntensity; + wavePhase = WavePhase.Exit; + waveElapsed = 0f; + return; + } + + float exitNormalized = Mathf.Clamp01(waveElapsed / waveRecoverDuration); + sWaveIntensity = Mathf.LerpUnclamped(waveTargetIntensity, 0f, exitNormalized); + if (exitNormalized < 1f) + return; + + sWaveIntensity = 0f; + wavePhase = WavePhase.None; + } + + public static GlobalDistortionRuntimeController EnsureInstance() + { + if (Instance != null) + return Instance; + + GlobalDistortionRuntimeController existing = FindFirstObjectByType(); + if (existing != null) + { + Instance = existing; + return existing; + } + + GameObject runtimeObject = new GameObject("__global_distortion_runtime"); + Instance = runtimeObject.AddComponent(); + return Instance; + } + + public static void Trigger(float intensity, float holdDuration, float recoverDurationSeconds) + { + EnsureInstance().TriggerDistortion(intensity, holdDuration, recoverDurationSeconds); + } + + public static void TriggerDefault() + { + EnsureInstance().TriggerDistortion(); + } + + public static void SetPersistent(float intensity) + { + EnsureInstance().SetPersistentIntensity(intensity); + } + + public static void ClearPersistent() + { + if (Instance != null) + Instance.ClearPersistentIntensity(); + else + sPersistentIntensity = 0f; + } + + public static void TriggerWaveEffect(float enterDurationSeconds, float recoverDurationSeconds) + { + EnsureInstance().TriggerWave(1f, enterDurationSeconds, recoverDurationSeconds); + } +} diff --git a/Assets/scripts/rendering/GlobalDistortionRuntimeController.cs.meta b/Assets/scripts/rendering/GlobalDistortionRuntimeController.cs.meta new file mode 100644 index 00000000..37242b18 --- /dev/null +++ b/Assets/scripts/rendering/GlobalDistortionRuntimeController.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: f8f82b86940efb345a454d1bc55f82ce \ No newline at end of file diff --git a/Assets/scripts/rendering/GlobalDistortionVolume.cs b/Assets/scripts/rendering/GlobalDistortionVolume.cs new file mode 100644 index 00000000..b6d38d03 --- /dev/null +++ b/Assets/scripts/rendering/GlobalDistortionVolume.cs @@ -0,0 +1,36 @@ +using System; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; + +[Serializable] +[VolumeComponentMenu("Post-processing/Bansonic/Global Distortion")] +[SupportedOnRenderPipeline(typeof(UniversalRenderPipelineAsset))] +public sealed class GlobalDistortionVolume : VolumeComponent, IPostProcessComponent +{ + [Tooltip("Base distortion intensity from the volume profile.")] + public ClampedFloatParameter intensity = new ClampedFloatParameter(0f, 0f, 1f); + + [Tooltip("Noise contribution to the UV distortion.")] + public ClampedFloatParameter noiseStrength = new ClampedFloatParameter(0.16f, 0f, 1f); + + [Tooltip("Radial pull strength from the distortion center.")] + public ClampedFloatParameter radialStrength = new ClampedFloatParameter(0.35f, 0f, 2f); + + [Tooltip("Noise tiling scale.")] + public ClampedFloatParameter noiseScale = new ClampedFloatParameter(12f, 0.1f, 80f); + + [Tooltip("Distortion center in viewport coordinates.")] + public Vector2Parameter center = new Vector2Parameter(new Vector2(0.5f, 0.5f)); + + [Tooltip("How quickly distortion fades towards screen edges.")] + public ClampedFloatParameter edgeFade = new ClampedFloatParameter(1.25f, 0.1f, 8f); + + [Tooltip("Whether this effect should run in SceneView cameras.")] + public BoolParameter affectSceneView = new BoolParameter(false); + + public bool IsActive() => intensity.value > 0.0001f; + + [Obsolete("Unused #from(2023.1)", false)] + public bool IsTileCompatible() => false; +} diff --git a/Assets/scripts/rendering/GlobalDistortionVolume.cs.meta b/Assets/scripts/rendering/GlobalDistortionVolume.cs.meta new file mode 100644 index 00000000..f4c2b7c9 --- /dev/null +++ b/Assets/scripts/rendering/GlobalDistortionVolume.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: fcaf02ee66ed11d4d9c67508e0130935 \ No newline at end of file diff --git a/Assets/scripts/rendering/GlobalGlitchRendererFeature.cs b/Assets/scripts/rendering/GlobalGlitchRendererFeature.cs new file mode 100644 index 00000000..d45268d4 --- /dev/null +++ b/Assets/scripts/rendering/GlobalGlitchRendererFeature.cs @@ -0,0 +1,178 @@ +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.RenderGraphModule; +using UnityEngine.Rendering.RenderGraphModule.Util; +using UnityEngine.Rendering.Universal; + +public class GlobalGlitchRendererFeature : ScriptableRendererFeature +{ + [Tooltip("When the custom glitch pass should execute.")] + public RenderPassEvent renderPassEvent = RenderPassEvent.AfterRenderingPostProcessing; + + private Material material; + private GlobalGlitchPass pass; + + public override void Create() + { + if (pass == null) + pass = new GlobalGlitchPass(); + + pass.renderPassEvent = renderPassEvent; + EnsureMaterial(); + } + + public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) + { + if (!EnsureMaterial()) + return; + + Camera camera = renderingData.cameraData.camera; + if (camera == null) + return; + + if (renderingData.cameraData.cameraType == CameraType.Preview || renderingData.cameraData.cameraType == CameraType.Reflection) + return; + + if (!renderingData.cameraData.postProcessEnabled) + return; + + GlobalGlitchVolume settings = VolumeManager.instance.stack.GetComponent(); + bool hasVolume = settings != null && settings.active; + float runtimeIntensity = GlobalGlitchRuntimeController.RuntimeIntensity; + float baseIntensity = hasVolume ? settings.intensity.value : 0f; + float finalIntensity = Mathf.Clamp01(baseIntensity + runtimeIntensity); + if (finalIntensity <= 0.0001f) + return; + + if (camera.cameraType == CameraType.SceneView && hasVolume && !settings.affectSceneView.value) + return; + + pass.Setup( + material, + finalIntensity, + hasVolume ? settings.blockStrength.value : 0.45f, + hasVolume ? settings.colorSplit.value : 0.01f, + hasVolume ? settings.jitterAmount.value : 0.4f, + hasVolume ? settings.stripFrequency.value : 48f, + hasVolume ? settings.scanlineStrength.value : 0.18f + ); + + renderer.EnqueuePass(pass); + } + + protected override void Dispose(bool disposing) + { + if (pass != null) + { + pass.Dispose(); + pass = null; + } + + if (material != null) + { + CoreUtils.Destroy(material); + material = null; + } + } + + private bool EnsureMaterial() + { + if (material != null) + return true; + + Shader shader = Shader.Find("Hidden/Bansonic/GlobalGlitch"); + if (shader == null) + return false; + + material = CoreUtils.CreateEngineMaterial(shader); + return material != null; + } + + private sealed class GlobalGlitchPass : ScriptableRenderPass + { + private static readonly int IntensityId = Shader.PropertyToID("_GlitchIntensity"); + private static readonly int BlockStrengthId = Shader.PropertyToID("_BlockStrength"); + private static readonly int ColorSplitId = Shader.PropertyToID("_ColorSplit"); + private static readonly int JitterAmountId = Shader.PropertyToID("_JitterAmount"); + private static readonly int StripFrequencyId = Shader.PropertyToID("_StripFrequency"); + private static readonly int ScanlineStrengthId = Shader.PropertyToID("_ScanlineStrength"); + + private Material passMaterial; + private float intensity; + private float blockStrength; + private float colorSplit; + private float jitterAmount; + private float stripFrequency; + private float scanlineStrength; + private RTHandle compatibilityCopy; + + public void Setup(Material material, float passIntensity, float passBlockStrength, float passColorSplit, float passJitterAmount, float passStripFrequency, float passScanlineStrength) + { + passMaterial = material; + intensity = passIntensity; + blockStrength = passBlockStrength; + colorSplit = passColorSplit; + jitterAmount = passJitterAmount; + stripFrequency = passStripFrequency; + scanlineStrength = passScanlineStrength; + requiresIntermediateTexture = true; + } + + public void Dispose() + { + compatibilityCopy?.Release(); + compatibilityCopy = null; + } + + public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData) + { + if (passMaterial == null) + return; + + UniversalResourceData resourceData = frameData.Get(); + if (resourceData.isActiveTargetBackBuffer) + return; + + ApplyMaterialProperties(); + + TextureHandle source = resourceData.activeColorTexture; + TextureDesc tempDesc = renderGraph.GetTextureDesc(source); + tempDesc.name = "CameraColor-GlobalGlitchTemp"; + tempDesc.clearBuffer = false; + + TextureHandle tempTexture = renderGraph.CreateTexture(tempDesc); + RenderGraphUtils.BlitMaterialParameters effectParameters = new(source, tempTexture, passMaterial, 0); + renderGraph.AddBlitPass(effectParameters, passName: "Global Glitch Effect"); + renderGraph.AddBlitPass(tempTexture, resourceData.activeColorTexture, Vector2.one, Vector2.zero, passName: "Global Glitch Restore"); + } + + public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) + { + if (passMaterial == null) + return; + + ApplyMaterialProperties(); + + RenderTextureDescriptor descriptor = renderingData.cameraData.cameraTargetDescriptor; + descriptor.msaaSamples = 1; + descriptor.depthBufferBits = 0; + RenderingUtils.ReAllocateHandleIfNeeded(ref compatibilityCopy, descriptor, FilterMode.Bilinear, TextureWrapMode.Clamp, name: "_GlobalGlitchCompatibilityCopy"); + + CommandBuffer cmd = CommandBufferPool.Get("Global Glitch Pass"); + Blitter.BlitCameraTexture(cmd, renderingData.cameraData.renderer.cameraColorTargetHandle, compatibilityCopy); + Blitter.BlitCameraTexture(cmd, compatibilityCopy, renderingData.cameraData.renderer.cameraColorTargetHandle, passMaterial, 0); + context.ExecuteCommandBuffer(cmd); + CommandBufferPool.Release(cmd); + } + + private void ApplyMaterialProperties() + { + passMaterial.SetFloat(IntensityId, intensity); + passMaterial.SetFloat(BlockStrengthId, blockStrength); + passMaterial.SetFloat(ColorSplitId, colorSplit); + passMaterial.SetFloat(JitterAmountId, jitterAmount); + passMaterial.SetFloat(StripFrequencyId, stripFrequency); + passMaterial.SetFloat(ScanlineStrengthId, scanlineStrength); + } + } +} diff --git a/Assets/scripts/rendering/GlobalGlitchRendererFeature.cs.meta b/Assets/scripts/rendering/GlobalGlitchRendererFeature.cs.meta new file mode 100644 index 00000000..5bec394d --- /dev/null +++ b/Assets/scripts/rendering/GlobalGlitchRendererFeature.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 84ae0996c2f9f6c43a0d5b735af7f121 \ No newline at end of file diff --git a/Assets/scripts/rendering/GlobalGlitchRuntimeController.cs b/Assets/scripts/rendering/GlobalGlitchRuntimeController.cs new file mode 100644 index 00000000..78d7cdce --- /dev/null +++ b/Assets/scripts/rendering/GlobalGlitchRuntimeController.cs @@ -0,0 +1,234 @@ +using UnityEngine; + +public class GlobalGlitchRuntimeController : MonoBehaviour +{ + public static GlobalGlitchRuntimeController Instance { get; private set; } + + [Header("Runtime Glitch Defaults")] + public float defaultTriggerIntensity = 0.7f; + public float defaultHoldDuration = 0.05f; + public float defaultRecoverDuration = 0.16f; + public AnimationCurve recoveryCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); + public bool useUnscaledTime = true; + public bool triggerOnEnable = false; + + private static float sPersistentIntensity; + private static float sPulseIntensity; + private static float sWaveIntensity; + + private float activePulseIntensity; + private float holdRemaining; + private float recoverElapsed; + private float recoverDuration; + private bool recovering; + + private float waveTargetIntensity; + private float waveEnterDuration; + private float waveRecoverDuration; + private float waveElapsed; + private WavePhase wavePhase = WavePhase.None; + + public static float RuntimeIntensity => Mathf.Clamp01(sPersistentIntensity + sPulseIntensity + sWaveIntensity); + + private enum WavePhase + { + None, + Enter, + Exit + } + + private void Awake() + { + if (Instance == null) + { + Instance = this; + return; + } + + if (Instance != this) + Destroy(gameObject); + } + + private void OnEnable() + { + if (triggerOnEnable) + TriggerGlitch(); + } + + private void Update() + { + float delta = useUnscaledTime ? Time.unscaledDeltaTime : Time.deltaTime; + UpdatePulse(delta); + UpdateWave(delta); + } + + public void TriggerGlitch() + { + TriggerGlitch(defaultTriggerIntensity, defaultHoldDuration, defaultRecoverDuration); + } + + public void TriggerGlitch(float intensity, float holdDuration, float recoveryDurationSeconds) + { + intensity = Mathf.Clamp01(intensity); + holdDuration = Mathf.Max(0f, holdDuration); + recoveryDurationSeconds = Mathf.Max(0f, recoveryDurationSeconds); + + activePulseIntensity = intensity; + holdRemaining = holdDuration; + recoverDuration = recoveryDurationSeconds; + recoverElapsed = 0f; + recovering = recoveryDurationSeconds <= 0f && holdDuration <= 0f; + sPulseIntensity = intensity; + + if (holdDuration <= 0f && recoveryDurationSeconds <= 0f) + { + activePulseIntensity = 0f; + sPulseIntensity = 0f; + recovering = false; + } + } + + public void SetPersistentIntensity(float intensity) + { + sPersistentIntensity = Mathf.Clamp01(intensity); + } + + public void ClearPersistentIntensity() + { + sPersistentIntensity = 0f; + } + + public void TriggerWave(float targetIntensity, float enterDurationSeconds, float recoverDurationSeconds) + { + waveTargetIntensity = Mathf.Clamp01(targetIntensity); + waveEnterDuration = Mathf.Max(0.0001f, enterDurationSeconds); + waveRecoverDuration = Mathf.Max(0.0001f, recoverDurationSeconds); + waveElapsed = 0f; + wavePhase = WavePhase.Enter; + sWaveIntensity = 0f; + } + + private void UpdatePulse(float delta) + { + if (activePulseIntensity <= 0f && !recovering) + { + sPulseIntensity = 0f; + return; + } + + if (holdRemaining > 0f) + { + holdRemaining -= delta; + sPulseIntensity = activePulseIntensity; + if (holdRemaining > 0f) + return; + + recovering = recoverDuration > 0f; + recoverElapsed = 0f; + if (!recovering) + { + activePulseIntensity = 0f; + sPulseIntensity = 0f; + return; + } + } + + if (!recovering) + { + activePulseIntensity = 0f; + sPulseIntensity = 0f; + return; + } + + recoverElapsed += delta; + float normalized = recoverDuration <= 0f ? 1f : Mathf.Clamp01(recoverElapsed / recoverDuration); + float curveValue = recoveryCurve != null && recoveryCurve.length > 0 + ? recoveryCurve.Evaluate(normalized) + : 1f - normalized; + + sPulseIntensity = Mathf.Clamp01(activePulseIntensity * Mathf.Max(0f, curveValue)); + if (normalized < 1f) + return; + + recovering = false; + activePulseIntensity = 0f; + sPulseIntensity = 0f; + } + + private void UpdateWave(float delta) + { + if (wavePhase == WavePhase.None) + { + sWaveIntensity = 0f; + return; + } + + waveElapsed += delta; + + if (wavePhase == WavePhase.Enter) + { + float normalized = Mathf.Clamp01(waveElapsed / waveEnterDuration); + sWaveIntensity = Mathf.LerpUnclamped(0f, waveTargetIntensity, normalized); + if (normalized < 1f) + return; + + sWaveIntensity = waveTargetIntensity; + wavePhase = WavePhase.Exit; + waveElapsed = 0f; + return; + } + + float exitNormalized = Mathf.Clamp01(waveElapsed / waveRecoverDuration); + sWaveIntensity = Mathf.LerpUnclamped(waveTargetIntensity, 0f, exitNormalized); + if (exitNormalized < 1f) + return; + + sWaveIntensity = 0f; + wavePhase = WavePhase.None; + } + + public static GlobalGlitchRuntimeController EnsureInstance() + { + if (Instance != null) + return Instance; + + GlobalGlitchRuntimeController existing = FindFirstObjectByType(); + if (existing != null) + { + Instance = existing; + return existing; + } + + GameObject runtimeObject = new GameObject("__global_glitch_runtime"); + Instance = runtimeObject.AddComponent(); + return Instance; + } + + public static void Trigger(float intensity, float holdDuration, float recoverDurationSeconds) + { + EnsureInstance().TriggerGlitch(intensity, holdDuration, recoverDurationSeconds); + } + + public static void TriggerDefault() + { + EnsureInstance().TriggerGlitch(); + } + + public static void SetPersistent(float intensity) + { + EnsureInstance().SetPersistentIntensity(intensity); + } + + public static void ClearPersistent() + { + if (Instance != null) + Instance.ClearPersistentIntensity(); + else + sPersistentIntensity = 0f; + } + + public static void TriggerWaveEffect(float enterDurationSeconds, float recoverDurationSeconds) + { + EnsureInstance().TriggerWave(1f, enterDurationSeconds, recoverDurationSeconds); + } +} diff --git a/Assets/scripts/rendering/GlobalGlitchRuntimeController.cs.meta b/Assets/scripts/rendering/GlobalGlitchRuntimeController.cs.meta new file mode 100644 index 00000000..649904be --- /dev/null +++ b/Assets/scripts/rendering/GlobalGlitchRuntimeController.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: fc8770c127e6d57478652fa9c3698e91 \ No newline at end of file diff --git a/Assets/scripts/rendering/GlobalGlitchVolume.cs b/Assets/scripts/rendering/GlobalGlitchVolume.cs new file mode 100644 index 00000000..39363c7e --- /dev/null +++ b/Assets/scripts/rendering/GlobalGlitchVolume.cs @@ -0,0 +1,36 @@ +using System; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; + +[Serializable] +[VolumeComponentMenu("Post-processing/Bansonic/Global Glitch")] +[SupportedOnRenderPipeline(typeof(UniversalRenderPipelineAsset))] +public sealed class GlobalGlitchVolume : VolumeComponent, IPostProcessComponent +{ + [Tooltip("Base glitch intensity from the volume profile.")] + public ClampedFloatParameter intensity = new ClampedFloatParameter(0f, 0f, 1f); + + [Tooltip("How strong the horizontal block tearing is.")] + public ClampedFloatParameter blockStrength = new ClampedFloatParameter(0.45f, 0f, 1f); + + [Tooltip("How much the RGB channels split apart.")] + public ClampedFloatParameter colorSplit = new ClampedFloatParameter(0.01f, 0f, 0.05f); + + [Tooltip("Per-line horizontal jitter amount.")] + public ClampedFloatParameter jitterAmount = new ClampedFloatParameter(0.4f, 0f, 1f); + + [Tooltip("How many horizontal strips are used to drive the glitch pattern.")] + public ClampedFloatParameter stripFrequency = new ClampedFloatParameter(48f, 1f, 240f); + + [Tooltip("Dark scanline contribution.")] + public ClampedFloatParameter scanlineStrength = new ClampedFloatParameter(0.18f, 0f, 1f); + + [Tooltip("Whether this effect should run in SceneView cameras.")] + public BoolParameter affectSceneView = new BoolParameter(false); + + public bool IsActive() => intensity.value > 0.0001f; + + [Obsolete("Unused #from(2023.1)", false)] + public bool IsTileCompatible() => false; +} diff --git a/Assets/scripts/rendering/GlobalGlitchVolume.cs.meta b/Assets/scripts/rendering/GlobalGlitchVolume.cs.meta new file mode 100644 index 00000000..c44b37f4 --- /dev/null +++ b/Assets/scripts/rendering/GlobalGlitchVolume.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 54a30677f5d2e4548881a79f4c3e3972 \ No newline at end of file diff --git a/Assets/scripts/rendering/GlobalMonochromeRendererFeature.cs b/Assets/scripts/rendering/GlobalMonochromeRendererFeature.cs new file mode 100644 index 00000000..dd6afb0f --- /dev/null +++ b/Assets/scripts/rendering/GlobalMonochromeRendererFeature.cs @@ -0,0 +1,144 @@ +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.RenderGraphModule; +using UnityEngine.Rendering.RenderGraphModule.Util; +using UnityEngine.Rendering.Universal; + +public class GlobalMonochromeRendererFeature : ScriptableRendererFeature +{ + [Tooltip("When the custom monochrome pass should execute.")] + public RenderPassEvent renderPassEvent = RenderPassEvent.AfterRenderingPostProcessing; + + private Material material; + private GlobalMonochromePass pass; + + public override void Create() + { + if (pass == null) + pass = new GlobalMonochromePass(); + + pass.renderPassEvent = renderPassEvent; + EnsureMaterial(); + } + + public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) + { + if (!EnsureMaterial()) + return; + + Camera camera = renderingData.cameraData.camera; + if (camera == null) + return; + + if (renderingData.cameraData.cameraType == CameraType.Preview || renderingData.cameraData.cameraType == CameraType.Reflection) + return; + + if (!renderingData.cameraData.postProcessEnabled) + return; + + GlobalMonochromeVolume settings = VolumeManager.instance.stack.GetComponent(); + bool hasVolume = settings != null && settings.active; + float runtimeIntensity = GlobalMonochromeRuntimeController.RuntimeIntensity; + float baseIntensity = hasVolume ? settings.intensity.value : 0f; + float finalIntensity = Mathf.Clamp01(Mathf.Max(baseIntensity, runtimeIntensity)); + if (finalIntensity <= 0.0001f) + return; + + if (camera.cameraType == CameraType.SceneView && hasVolume && !settings.affectSceneView.value) + return; + + pass.Setup(material, finalIntensity); + renderer.EnqueuePass(pass); + } + + protected override void Dispose(bool disposing) + { + if (pass != null) + { + pass.Dispose(); + pass = null; + } + + if (material != null) + { + CoreUtils.Destroy(material); + material = null; + } + } + + private bool EnsureMaterial() + { + if (material != null) + return true; + + Shader shader = Shader.Find("Hidden/Bansonic/GlobalMonochrome"); + if (shader == null) + return false; + + material = CoreUtils.CreateEngineMaterial(shader); + return material != null; + } + + private sealed class GlobalMonochromePass : ScriptableRenderPass + { + private static readonly int IntensityId = Shader.PropertyToID("_MonochromeIntensity"); + + private Material passMaterial; + private float intensity; + private RTHandle compatibilityCopy; + + public void Setup(Material material, float passIntensity) + { + passMaterial = material; + intensity = passIntensity; + requiresIntermediateTexture = true; + } + + public void Dispose() + { + compatibilityCopy?.Release(); + compatibilityCopy = null; + } + + public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData) + { + if (passMaterial == null) + return; + + UniversalResourceData resourceData = frameData.Get(); + if (resourceData.isActiveTargetBackBuffer) + return; + + passMaterial.SetFloat(IntensityId, intensity); + + TextureHandle source = resourceData.activeColorTexture; + TextureDesc tempDesc = renderGraph.GetTextureDesc(source); + tempDesc.name = "CameraColor-GlobalMonochromeTemp"; + tempDesc.clearBuffer = false; + + TextureHandle tempTexture = renderGraph.CreateTexture(tempDesc); + RenderGraphUtils.BlitMaterialParameters effectParameters = new(source, tempTexture, passMaterial, 0); + renderGraph.AddBlitPass(effectParameters, passName: "Global Monochrome Effect"); + renderGraph.AddBlitPass(tempTexture, resourceData.activeColorTexture, Vector2.one, Vector2.zero, passName: "Global Monochrome Restore"); + } + + public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) + { + if (passMaterial == null) + return; + + passMaterial.SetFloat(IntensityId, intensity); + + RenderTextureDescriptor descriptor = renderingData.cameraData.cameraTargetDescriptor; + descriptor.msaaSamples = 1; + descriptor.depthBufferBits = 0; + RenderingUtils.ReAllocateHandleIfNeeded(ref compatibilityCopy, descriptor, FilterMode.Bilinear, TextureWrapMode.Clamp, name: "_GlobalMonochromeCompatibilityCopy"); + + CommandBuffer cmd = CommandBufferPool.Get("Global Monochrome Pass"); + Blitter.BlitCameraTexture(cmd, renderingData.cameraData.renderer.cameraColorTargetHandle, compatibilityCopy); + Blitter.BlitCameraTexture(cmd, compatibilityCopy, renderingData.cameraData.renderer.cameraColorTargetHandle, passMaterial, 0); + context.ExecuteCommandBuffer(cmd); + CommandBufferPool.Release(cmd); + } + } +} diff --git a/Assets/scripts/rendering/GlobalMonochromeRendererFeature.cs.meta b/Assets/scripts/rendering/GlobalMonochromeRendererFeature.cs.meta new file mode 100644 index 00000000..67c989f1 --- /dev/null +++ b/Assets/scripts/rendering/GlobalMonochromeRendererFeature.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: e30db065f184af241b78ce51edc50d96 \ No newline at end of file diff --git a/Assets/scripts/rendering/GlobalMonochromeRuntimeController.cs b/Assets/scripts/rendering/GlobalMonochromeRuntimeController.cs new file mode 100644 index 00000000..f74f3539 --- /dev/null +++ b/Assets/scripts/rendering/GlobalMonochromeRuntimeController.cs @@ -0,0 +1,125 @@ +using UnityEngine; + +public class GlobalMonochromeRuntimeController : MonoBehaviour +{ + public static GlobalMonochromeRuntimeController Instance { get; private set; } + + [Header("Runtime Monochrome Defaults")] + public float defaultEnterDuration = 0.12f; + public float defaultRecoverDuration = 0.12f; + public bool useUnscaledTime = true; + public bool triggerOnEnable = false; + + private static float sRuntimeIntensity; + + private float enterDuration; + private float recoverDuration; + private float elapsed; + private Phase phase = Phase.None; + + public static float RuntimeIntensity => Mathf.Clamp01(sRuntimeIntensity); + + private enum Phase + { + None, + Enter, + Exit + } + + private void Awake() + { + if (Instance == null) + { + Instance = this; + return; + } + + if (Instance != this) + Destroy(gameObject); + } + + private void OnEnable() + { + if (triggerOnEnable) + TriggerMonochrome(); + } + + private void Update() + { + float delta = useUnscaledTime ? Time.unscaledDeltaTime : Time.deltaTime; + UpdateWave(delta); + } + + public void TriggerMonochrome() + { + TriggerMonochrome(defaultEnterDuration, defaultRecoverDuration); + } + + public void TriggerMonochrome(float enterDurationSeconds, float recoverDurationSeconds) + { + enterDuration = Mathf.Max(0.0001f, enterDurationSeconds); + recoverDuration = Mathf.Max(0.0001f, recoverDurationSeconds); + elapsed = 0f; + phase = Phase.Enter; + sRuntimeIntensity = 0f; + } + + private void UpdateWave(float delta) + { + if (phase == Phase.None) + { + sRuntimeIntensity = 0f; + return; + } + + elapsed += delta; + + if (phase == Phase.Enter) + { + float normalized = Mathf.Clamp01(elapsed / enterDuration); + sRuntimeIntensity = Mathf.LerpUnclamped(0f, 1f, normalized); + if (normalized < 1f) + return; + + sRuntimeIntensity = 1f; + elapsed = 0f; + phase = Phase.Exit; + return; + } + + float exitNormalized = Mathf.Clamp01(elapsed / recoverDuration); + sRuntimeIntensity = Mathf.LerpUnclamped(1f, 0f, exitNormalized); + if (exitNormalized < 1f) + return; + + sRuntimeIntensity = 0f; + phase = Phase.None; + } + + public static GlobalMonochromeRuntimeController EnsureInstance() + { + if (Instance != null) + return Instance; + + GlobalMonochromeRuntimeController existing = FindFirstObjectByType(); + if (existing != null) + { + Instance = existing; + return existing; + } + + GameObject runtimeObject = new GameObject("__global_monochrome_runtime"); + Instance = runtimeObject.AddComponent(); + return Instance; + } + + public static void Trigger(float enterDurationSeconds, float recoverDurationSeconds) + { + EnsureInstance().TriggerMonochrome(enterDurationSeconds, recoverDurationSeconds); + } + + public static void TriggerDefault() + { + EnsureInstance().TriggerMonochrome(); + } +} diff --git a/Assets/scripts/rendering/GlobalMonochromeRuntimeController.cs.meta b/Assets/scripts/rendering/GlobalMonochromeRuntimeController.cs.meta new file mode 100644 index 00000000..f68849a4 --- /dev/null +++ b/Assets/scripts/rendering/GlobalMonochromeRuntimeController.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: d2b5933af9f532c469c81a1942ec2220 \ No newline at end of file diff --git a/Assets/scripts/rendering/GlobalMonochromeVolume.cs b/Assets/scripts/rendering/GlobalMonochromeVolume.cs new file mode 100644 index 00000000..34934058 --- /dev/null +++ b/Assets/scripts/rendering/GlobalMonochromeVolume.cs @@ -0,0 +1,21 @@ +using System; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; + +[Serializable] +[VolumeComponentMenu("Post-processing/Bansonic/Global Monochrome")] +[SupportedOnRenderPipeline(typeof(UniversalRenderPipelineAsset))] +public sealed class GlobalMonochromeVolume : VolumeComponent, IPostProcessComponent +{ + [Tooltip("Base monochrome intensity from the volume profile.")] + public ClampedFloatParameter intensity = new ClampedFloatParameter(0f, 0f, 1f); + + [Tooltip("Whether this effect should run in SceneView cameras.")] + public BoolParameter affectSceneView = new BoolParameter(false); + + public bool IsActive() => intensity.value > 0.0001f; + + [Obsolete("Unused #from(2023.1)", false)] + public bool IsTileCompatible() => false; +} diff --git a/Assets/scripts/rendering/GlobalMonochromeVolume.cs.meta b/Assets/scripts/rendering/GlobalMonochromeVolume.cs.meta new file mode 100644 index 00000000..608f38ef --- /dev/null +++ b/Assets/scripts/rendering/GlobalMonochromeVolume.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 6bf226df2a25ec249a0bda3685d3bcd6 \ No newline at end of file diff --git a/Assets/scripts/settings/userSettings.cs b/Assets/scripts/settings/userSettings.cs index 66379100..2b45ceed 100644 --- a/Assets/scripts/settings/userSettings.cs +++ b/Assets/scripts/settings/userSettings.cs @@ -214,6 +214,9 @@ public class userSettings : MonoBehaviour PlayerRksService.ClearPersistentState(); yield return null; + PlayerSkillService.ClearPersistentState(); + yield return null; + #if UNITY_EDITOR AssetDatabase.SaveAssets(); #endif diff --git a/Assets/storeSystem/storeSystem.cs b/Assets/storeSystem/storeSystem.cs index 2ff05306..350b1896 100644 --- a/Assets/storeSystem/storeSystem.cs +++ b/Assets/storeSystem/storeSystem.cs @@ -106,6 +106,18 @@ public class storeSystem : MonoBehaviour RefreshCurrentView(); } + private void OnEnable() + { + if (cachedItems.Count <= 0) + { + return; + } + + LoadAllStoreItems(); + ApplyPersistedStateToItems(); + RefreshCurrentView(); + } + private void OnDestroy() { CloseActiveCtas(); @@ -333,6 +345,17 @@ public class storeSystem : MonoBehaviour TryCacheStoreItem(itemSO, sourceLabel, uniqueItemIds); } } + + var playerSkillItems = new List(); + PlayerSkillService.AppendDynamicStoreItems(playerSkillItems, coinSprite, materialSprite); + for (int i = 0; i < playerSkillItems.Count; i++) + { + var itemSO = playerSkillItems[i]; + var sourceLabel = string.IsNullOrEmpty(itemSO != null ? itemSO.name : string.Empty) + ? "playerSkillStore" + : "playerSkillStore/" + itemSO.name; + TryCacheStoreItem(itemSO, sourceLabel, uniqueItemIds); + } } private void TryCacheStoreItem(storeItemSO itemSO, string sourceLabel, HashSet uniqueItemIds) @@ -1044,6 +1067,12 @@ public class storeSystem : MonoBehaviour return; } + if (PlayerSkillService.IsPlayerSkillStoreItem(currentSelectedItem)) + { + HandlePlayerSkillStorePurchaseClicked(currentSelectedItem); + return; + } + if (IsSelectableEquipmentRewardItem(currentSelectedItem)) { HandleSelectableEquipmentPurchaseClicked(currentSelectedItem); @@ -1064,6 +1093,32 @@ public class storeSystem : MonoBehaviour } RegisterPurchasedCount(currentSelectedItem.itemID, grantedCount); + gItemGet.display(gItemGet.FromStoreItem(currentSelectedItem, grantedCount)); + RefreshCurrentView(); + } + + private void HandlePlayerSkillStorePurchaseClicked(storeItemSO itemSO) + { + if (itemSO == null) + { + return; + } + + string failureMessage; + gItemGet.ItemEntry rewardEntry; + if (!PlayerSkillService.TryPurchasePlayerSkillStoreItem(itemSO, currentPurchaseAmount, out failureMessage, out rewardEntry)) + { + if (!string.IsNullOrEmpty(failureMessage)) + { + gNotice.warning.display(failureMessage); + } + + RefreshPurchaseSummary(); + return; + } + + RegisterPurchasedCount(itemSO.itemID, currentPurchaseAmount); + gItemGet.display(rewardEntry); RefreshCurrentView(); } @@ -1087,6 +1142,23 @@ public class storeSystem : MonoBehaviour return; } + if (itemSO.costRequirements == null || itemSO.costRequirements.Count == 0) + { + gNotice.warning.display("商品数据丢失"); + return; + } + + var primaryCost = itemSO.costRequirements[0]; + int totalCost = Mathf.Max(0, primaryCost.amount); + string insufficientMessage = primaryCost.currencyType == storeItemSO.CurrencyType.material ? "记忆碎片不足" : "货币不足"; + + if (!HasEnoughCurrency(primaryCost.currencyType, totalCost)) + { + gNotice.warning.display(insufficientMessage); + RefreshPurchaseSummary(); + return; + } + bool requireTypeSelection = RequiresTypeSelection(requirement); bool requireSkillSelection = RequiresSkillSelection(requirement); @@ -1183,6 +1255,7 @@ public class storeSystem : MonoBehaviour } RegisterPurchasedCount(itemSO.itemID, 1); + gItemGet.display(gItemGet.FromEquipment(generated, 1)); RefreshAllEquipBags(); } @@ -1492,6 +1565,18 @@ public class storeSystem : MonoBehaviour } } + public void RefreshPlayerSkillItems() + { + if (!isActiveAndEnabled) + { + return; + } + + LoadAllStoreItems(); + ApplyPersistedStateToItems(); + RefreshCurrentView(); + } + private bool TryGetEntry(int itemID, out StoreRuntimeEntry entry) { entry = null; diff --git a/Assets/敌人全部击败图 (1).png b/Assets/敌人全部击败图 (1).png new file mode 100644 index 0000000000000000000000000000000000000000..61c2ce0e85194ecb5bda7457680b9840265a1312 GIT binary patch literal 235090 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 z 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