From f5c6f143c0592806ce1867a3b62ef4456e15da1c Mon Sep 17 00:00:00 2001 From: FloatGaming <3118444022@qq.com> Date: Mon, 16 Mar 2026 23:17:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E7=94=A8=E6=88=B7=E6=9C=80?= =?UTF-8?q?=E8=BF=91100=E5=9C=BA=E6=88=98=E7=BB=A9=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E5=B9=B6=E5=AE=9E=E7=8E=B0=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sprites/Square Button Violet.png.meta | 24 +- .../MCPForUnity/Editor/Tools/GetToolStates.cs | 22 + .../Editor/Tools/GetToolStates.cs.meta | 2 + Assets/Resources/PerformanceTestRunInfo.json | 1 + ....meta => PerformanceTestRunInfo.json.meta} | 5 +- .../Resources/PerformanceTestRunSettings.json | 1 + .../PerformanceTestRunSettings.json.meta | 7 + .../playerdata/playerData_uniqueData.asset | 7 +- Assets/Resources/so/ally/30201_ayano.asset | 1 + Assets/Resources/so/ally/30202_yuetao.asset | 1 + Assets/Resources/so/ally/30203_moyuri.asset | 1 + Assets/Resources/so/ally/30204_lock.asset | 1 + Assets/Resources/so/ally/30205_winnie.asset | 1 + Assets/Resources/so/ally/30206_erendira.asset | 2 + .../so/storeSO/77000_defaultItem.asset | 6 +- ..._defaultItem 1.asset => 77001_30206.asset} | 16 +- ...em 1.asset.meta => 77001_30206.asset.meta} | 0 .../so/storeSO/77002_defaultItem 2.asset | 34 - Assets/Resources/so/storeSO/77003_song1.asset | 6 +- Assets/Resources/so/storeSO/77004_song2.asset | 6 +- .../storeSO/medicines/78000_emperorXPb.asset | 6 +- .../storeSO/medicines/78001_normalXPb.asset | 6 +- .../storeSO/medicines/78002_mediumXPb.asset | 6 +- .../storeSO/medicines/78003_superiorXPb.asset | 6 +- .../storeSO/medicines/78004_supremeXPb.asset | 6 +- .../medicines/78005_extraordinaryXPb.asset | 4 +- .../medicines/78006_celestialXPb.asset | 4 +- .../storeSO/medicines/78011_therainXPb.asset | 4 +- .../medicines/78012_senior_therainXPb.asset | 4 +- .../medicines/78013_super_therainXPb.asset | 4 +- .../storeSO/medicines/78021_dush_normal.asset | 4 +- .../storeSO/medicines/78022_dush_medium.asset | 4 +- .../storeSO/medicines/78023_dush_super.asset | 4 +- .../medicines/78024_dush_superior.asset | 4 +- .../song_songIndex/1002001_emilia.asset | 1 + .../song_songIndex/1002002_arcstar.asset | 1 + .../song_songIndex/1002003_spectrum.asset | 1 + .../song_songIndex/1002004_smile.asset | 29 +- .../1002005_BaboonBabbler.asset | 1 + Assets/Resources/song_songIndex/1002006.asset | 1 + Assets/Scenes/UI_UI.unity | 6431 ++++++++++++++++- Assets/Scenes/gamePlay_gamePlay.unity | 254 +- ...niversalRenderPipelineGlobalSettings.asset | 12 +- .../artworks/notebook/notebookController.cs | 1 + .../artworks/notebook/notebook_fatherType.cs | 15 +- Assets/playerBagSystem.meta | 8 + ...56dp_FFFFFF_FILL0_wght400_GRAD0_opsz48.png | Bin 0 -> 7111 bytes ...FFFFFF_FILL0_wght400_GRAD0_opsz48.png.meta | 156 + Assets/playerDisplay.meta | 8 + Assets/playerDisplay/UI_Player.cs | 443 ++ Assets/playerDisplay/UI_Player.cs.meta | 2 + Assets/playerDisplay/pInfoPrefab.cs | 10 + Assets/playerDisplay/pInfoPrefab.cs.meta | 2 + Assets/playerDisplay/pInfoPrefab.prefab | 302 + Assets/playerDisplay/pInfoPrefab.prefab.meta | 7 + Assets/playerInfoDisplay.meta | 8 + .../gameHistoryPrefab.prefab | 778 ++ .../gameHistoryPrefab.prefab.meta | 7 + Assets/playerInfoDisplay/ghPrefab.cs | 156 + Assets/playerInfoDisplay/ghPrefab.cs.meta | 2 + .../playerInfoDisplay/uRecentGameHistory.cs | 200 + .../uRecentGameHistory.cs.meta | 2 + Assets/scripts/Data/AllyHero_SO.cs | 30 + Assets/scripts/Data/Player_SO.cs | 46 +- Assets/scripts/DataCheck.cs | 110 +- .../InGamePerformanceManager.cs | 7 + Assets/scripts/UI/Panel/UI_Panel_Mail.cs | 17 +- Assets/scripts/UI/Panel/UI_Panel_Main.cs | 1 + .../dontdestroyonload/btm and top.prefab | 279 +- Assets/scripts/Utilities/JsonDataHandler.cs | 49 +- .../_runtimecache/AllyHeroDeployLedger.cs | 215 + .../AllyHeroDeployLedger.cs.meta | 2 + .../AllyHeroDeployLedgerModels.cs | 24 + .../AllyHeroDeployLedgerModels.cs.meta | 2 + .../AllyHeroDeployLedgerStorage.cs | 187 + .../AllyHeroDeployLedgerStorage.cs.meta | 2 + .../_runtimecache/DushMaterialLedger.cs | 19 + .../_runtimecache/LegacyPlainSaveMigrator.cs | 102 + .../LegacyPlainSaveMigrator.cs.meta | 2 + .../_runtimecache/RecentPlayHistoryModels.cs | 23 + .../RecentPlayHistoryModels.cs.meta | 2 + .../_runtimecache/RecentPlayHistoryStore.cs | 57 + .../RecentPlayHistoryStore.cs.meta | 2 + .../scripts/_runtimecache/SecureSaveVault.cs | 555 ++ .../_runtimecache/SecureSaveVault.cs.meta | 2 + .../StoreExpBottlePurchaseService.cs | 113 +- .../_runtimecache/StoreOwnershipLedger.cs | 656 ++ .../StoreOwnershipLedger.cs.meta | 2 + .../_runtimecache/StoreOwnershipModels.cs | 25 + .../StoreOwnershipModels.cs.meta | 2 + .../_runtimecache/StoreOwnershipStorage.cs | 202 + .../StoreOwnershipStorage.cs.meta | 2 + Assets/scripts/dailyTask/DailyTaskEventHub.cs | 36 +- .../dailyTask/DailyTaskRuntimeModels.cs | 17 + .../scripts/dailyTask/DailyTaskSaveService.cs | 23 +- Assets/scripts/dailyTask/DailyTaskService.cs | 422 +- .../dailyTask/taskPool/10100_usertasks.asset | 83 +- .../dailyTask/taskPool/userTasksPool.cs | 6 +- .../scripts/gamePlay_gameplay/NoteSpawner.cs | 5 + .../gamePlay_gameplay/settlementController.cs | 198 +- Assets/songsDatabase/SongData.cs | 76 +- Assets/songsDatabase/SongDataLoader.cs | 18 +- Assets/songsDatabase/SongDataManager.cs | 22 +- Assets/storeSystem/UI_Panel_Store.prefab | 4 +- Assets/storeSystem/storeItemSO.cs | 27 +- Assets/storeSystem/storeSystem.cs | 40 +- 106 files changed, 12120 insertions(+), 642 deletions(-) create mode 100644 Assets/MCPForUnity/Editor/Tools/GetToolStates.cs create mode 100644 Assets/MCPForUnity/Editor/Tools/GetToolStates.cs.meta create mode 100644 Assets/Resources/PerformanceTestRunInfo.json rename Assets/Resources/{so/storeSO/77002_defaultItem 2.asset.meta => PerformanceTestRunInfo.json.meta} (52%) create mode 100644 Assets/Resources/PerformanceTestRunSettings.json create mode 100644 Assets/Resources/PerformanceTestRunSettings.json.meta rename Assets/Resources/so/storeSO/{77001_defaultItem 1.asset => 77001_30206.asset} (50%) rename Assets/Resources/so/storeSO/{77001_defaultItem 1.asset.meta => 77001_30206.asset.meta} (100%) delete mode 100644 Assets/Resources/so/storeSO/77002_defaultItem 2.asset create mode 100644 Assets/playerBagSystem.meta create mode 100644 Assets/playerBagSystem/deployed_code_256dp_FFFFFF_FILL0_wght400_GRAD0_opsz48.png create mode 100644 Assets/playerBagSystem/deployed_code_256dp_FFFFFF_FILL0_wght400_GRAD0_opsz48.png.meta create mode 100644 Assets/playerDisplay.meta create mode 100644 Assets/playerDisplay/UI_Player.cs create mode 100644 Assets/playerDisplay/UI_Player.cs.meta create mode 100644 Assets/playerDisplay/pInfoPrefab.cs create mode 100644 Assets/playerDisplay/pInfoPrefab.cs.meta create mode 100644 Assets/playerDisplay/pInfoPrefab.prefab create mode 100644 Assets/playerDisplay/pInfoPrefab.prefab.meta create mode 100644 Assets/playerInfoDisplay.meta create mode 100644 Assets/playerInfoDisplay/gameHistoryPrefab.prefab create mode 100644 Assets/playerInfoDisplay/gameHistoryPrefab.prefab.meta create mode 100644 Assets/playerInfoDisplay/ghPrefab.cs create mode 100644 Assets/playerInfoDisplay/ghPrefab.cs.meta create mode 100644 Assets/playerInfoDisplay/uRecentGameHistory.cs create mode 100644 Assets/playerInfoDisplay/uRecentGameHistory.cs.meta create mode 100644 Assets/scripts/_runtimecache/AllyHeroDeployLedger.cs create mode 100644 Assets/scripts/_runtimecache/AllyHeroDeployLedger.cs.meta create mode 100644 Assets/scripts/_runtimecache/AllyHeroDeployLedgerModels.cs create mode 100644 Assets/scripts/_runtimecache/AllyHeroDeployLedgerModels.cs.meta create mode 100644 Assets/scripts/_runtimecache/AllyHeroDeployLedgerStorage.cs create mode 100644 Assets/scripts/_runtimecache/AllyHeroDeployLedgerStorage.cs.meta create mode 100644 Assets/scripts/_runtimecache/LegacyPlainSaveMigrator.cs create mode 100644 Assets/scripts/_runtimecache/LegacyPlainSaveMigrator.cs.meta create mode 100644 Assets/scripts/_runtimecache/RecentPlayHistoryModels.cs create mode 100644 Assets/scripts/_runtimecache/RecentPlayHistoryModels.cs.meta create mode 100644 Assets/scripts/_runtimecache/RecentPlayHistoryStore.cs create mode 100644 Assets/scripts/_runtimecache/RecentPlayHistoryStore.cs.meta create mode 100644 Assets/scripts/_runtimecache/SecureSaveVault.cs create mode 100644 Assets/scripts/_runtimecache/SecureSaveVault.cs.meta create mode 100644 Assets/scripts/_runtimecache/StoreOwnershipLedger.cs create mode 100644 Assets/scripts/_runtimecache/StoreOwnershipLedger.cs.meta create mode 100644 Assets/scripts/_runtimecache/StoreOwnershipModels.cs create mode 100644 Assets/scripts/_runtimecache/StoreOwnershipModels.cs.meta create mode 100644 Assets/scripts/_runtimecache/StoreOwnershipStorage.cs create mode 100644 Assets/scripts/_runtimecache/StoreOwnershipStorage.cs.meta diff --git a/Assets/Airy UI/Sprites/Sprites/Square Button Violet.png.meta b/Assets/Airy UI/Sprites/Sprites/Square Button Violet.png.meta index 1943df8b..9281dfc2 100644 --- a/Assets/Airy UI/Sprites/Sprites/Square Button Violet.png.meta +++ b/Assets/Airy UI/Sprites/Sprites/Square Button Violet.png.meta @@ -1,5 +1,12 @@ fileFormatVersion: 2 guid: 931f6455943555649a61ed7f1c76cbf6 +AssetOrigin: + serializedVersion: 1 + productId: 135898 + packageName: Airy UI 2 - Easy UI Animation + packageVersion: 2.0.2 + assetPath: Assets/Airy UI/Sprites/Sprites/Square Button Violet.png + uploadId: 760159 TextureImporter: internalIDToNameTable: - first: @@ -46,13 +53,13 @@ TextureImporter: nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 2 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 spritePivot: {x: 0.5, y: 0.5} spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteBorder: {x: 18, y: 18, z: 18, w: 18} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 alphaIsTransparency: 1 @@ -160,7 +167,7 @@ TextureImporter: width: 138 height: 149 alignment: 0 - pivot: {x: 0, y: 0} + pivot: {x: 0.5, y: 0.5} border: {x: 0, y: 0, z: 0, w: 0} customData: outline: [] @@ -177,8 +184,8 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: - internalID: 0 + spriteID: 5e97eb03825dee720800000000000000 + internalID: 1537655665 vertices: [] indices: edges: [] @@ -193,10 +200,3 @@ TextureImporter: userData: assetBundleName: assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 135898 - packageName: Airy UI 2 - Easy UI Animation - packageVersion: 2.0.2 - assetPath: Assets/Airy UI/Sprites/Sprites/Square Button Violet.png - uploadId: 760159 diff --git a/Assets/MCPForUnity/Editor/Tools/GetToolStates.cs b/Assets/MCPForUnity/Editor/Tools/GetToolStates.cs new file mode 100644 index 00000000..bfe87a23 --- /dev/null +++ b/Assets/MCPForUnity/Editor/Tools/GetToolStates.cs @@ -0,0 +1,22 @@ +using System; +using MCPForUnity.Editor.Helpers; +using Newtonsoft.Json.Linq; + +namespace MCPForUnity.Editor.Tools +{ + [McpForUnityTool("get_tool_states")] + public static class GetToolStates + { + public static object HandleCommand(JObject @params) + { + var empty = Array.Empty(); + return new SuccessResponse( + "Tool states are not tracked on the Unity side.", + new + { + toolStates = empty, + states = empty + }); + } + } +} diff --git a/Assets/MCPForUnity/Editor/Tools/GetToolStates.cs.meta b/Assets/MCPForUnity/Editor/Tools/GetToolStates.cs.meta new file mode 100644 index 00000000..ab69f4cb --- /dev/null +++ b/Assets/MCPForUnity/Editor/Tools/GetToolStates.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 2b1d95ff0b9b68840b934b5f7c1b0aca \ No newline at end of file diff --git a/Assets/Resources/PerformanceTestRunInfo.json b/Assets/Resources/PerformanceTestRunInfo.json new file mode 100644 index 00000000..76ce5cd0 --- /dev/null +++ b/Assets/Resources/PerformanceTestRunInfo.json @@ -0,0 +1 @@ +{"TestSuite":"","Date":0,"Player":{"Development":false,"ScreenWidth":0,"ScreenHeight":0,"ScreenRefreshRate":0,"Fullscreen":false,"Vsync":0,"AntiAliasing":0,"Batchmode":false,"RenderThreadingMode":"GraphicsJobs","GpuSkinning":false,"Platform":"","ColorSpace":"","AnisotropicFiltering":"","BlendWeights":"","GraphicsApi":"","ScriptingBackend":"Mono2x","AndroidTargetSdkVersion":"AndroidApiLevelAuto","AndroidBuildSystem":"Gradle","BuildTarget":"StandaloneWindows64","StereoRenderingPath":"MultiPass"},"Hardware":{"OperatingSystem":"","DeviceModel":"","DeviceName":"","ProcessorType":"","ProcessorCount":0,"GraphicsDeviceName":"","SystemMemorySizeMB":0},"Editor":{"Version":"6000.0.49f1","Branch":"6000.0/staging","Changeset":"840e0a9776d9","Date":1746604669},"Dependencies":["com.unity.addressables@2.4.6","com.unity.collab-proxy@2.7.1","com.unity.feature.2d@2.0.1","com.unity.ide.rider@3.0.34","com.unity.ide.visualstudio@2.0.23","com.unity.inputsystem@1.11.2","com.unity.nuget.newtonsoft-json@3.2.1","com.unity.render-pipelines.universal@17.0.4","com.unity.test-framework@1.5.1","com.unity.textmeshpro@5.0.0","com.unity.timeline@1.7.6","com.unity.ugui@2.0.0","com.unity.modules.ai@1.0.0","com.unity.modules.androidjni@1.0.0","com.unity.modules.animation@1.0.0","com.unity.modules.assetbundle@1.0.0","com.unity.modules.audio@1.0.0","com.unity.modules.director@1.0.0","com.unity.modules.imageconversion@1.0.0","com.unity.modules.imgui@1.0.0","com.unity.modules.jsonserialize@1.0.0","com.unity.modules.particlesystem@1.0.0","com.unity.modules.physics@1.0.0","com.unity.modules.physics2d@1.0.0","com.unity.modules.screencapture@1.0.0","com.unity.modules.terrain@1.0.0","com.unity.modules.terrainphysics@1.0.0","com.unity.modules.tilemap@1.0.0","com.unity.modules.ui@1.0.0","com.unity.modules.uielements@1.0.0","com.unity.modules.umbra@1.0.0","com.unity.modules.unityanalytics@1.0.0","com.unity.modules.unitywebrequest@1.0.0","com.unity.modules.unitywebrequestassetbundle@1.0.0","com.unity.modules.unitywebrequestaudio@1.0.0","com.unity.modules.unitywebrequesttexture@1.0.0","com.unity.modules.unitywebrequestwww@1.0.0","com.unity.modules.vehicles@1.0.0","com.unity.modules.video@1.0.0","com.unity.modules.vr@1.0.0","com.unity.modules.wind@1.0.0","com.unity.modules.xr@1.0.0","com.esotericsoftware.spine.timeline@4.3.20","com.esotericsoftware.spine.urp-shaders@4.3.25","com.unity.modules.subsystems@1.0.0","com.unity.modules.hierarchycore@1.0.0","com.unity.ext.nunit@2.0.5","com.unity.render-pipelines.core@17.0.4","com.unity.shadergraph@17.0.4","com.unity.render-pipelines.universal-config@17.0.3","com.unity.2d.animation@10.1.4","com.unity.2d.pixel-perfect@5.0.3","com.unity.2d.psdimporter@9.0.3","com.unity.2d.sprite@1.0.0","com.unity.2d.spriteshape@10.0.7","com.unity.2d.tilemap@1.0.0","com.unity.2d.tilemap.extras@4.1.0","com.unity.2d.aseprite@1.1.9","com.unity.profiling.core@1.0.2","com.unity.scriptablebuildpipeline@2.3.8","com.unity.searcher@4.9.3","com.unity.burst@1.8.21","com.unity.mathematics@1.3.2","com.unity.collections@2.5.1","com.unity.rendering.light-transport@1.0.1","com.unity.2d.common@9.0.7","com.unity.nuget.mono-cecil@1.11.4","com.unity.test-framework.performance@3.1.0"],"Results":[]} \ No newline at end of file diff --git a/Assets/Resources/so/storeSO/77002_defaultItem 2.asset.meta b/Assets/Resources/PerformanceTestRunInfo.json.meta similarity index 52% rename from Assets/Resources/so/storeSO/77002_defaultItem 2.asset.meta rename to Assets/Resources/PerformanceTestRunInfo.json.meta index 1f18b155..14dc771f 100644 --- a/Assets/Resources/so/storeSO/77002_defaultItem 2.asset.meta +++ b/Assets/Resources/PerformanceTestRunInfo.json.meta @@ -1,8 +1,7 @@ fileFormatVersion: 2 -guid: 47734c47c246ac641a0f9740f760dc30 -NativeFormatImporter: +guid: 6fc567e65fed39341a6019f7397a49e4 +TextScriptImporter: externalObjects: {} - mainObjectFileID: 11400000 userData: assetBundleName: assetBundleVariant: diff --git a/Assets/Resources/PerformanceTestRunSettings.json b/Assets/Resources/PerformanceTestRunSettings.json new file mode 100644 index 00000000..49438ae1 --- /dev/null +++ b/Assets/Resources/PerformanceTestRunSettings.json @@ -0,0 +1 @@ +{"MeasurementCount":-1} \ No newline at end of file diff --git a/Assets/Resources/PerformanceTestRunSettings.json.meta b/Assets/Resources/PerformanceTestRunSettings.json.meta new file mode 100644 index 00000000..0ab8f07c --- /dev/null +++ b/Assets/Resources/PerformanceTestRunSettings.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 324d0b1f8cae7764f8355f60f935af49 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/playerdata/playerData_uniqueData.asset b/Assets/Resources/playerdata/playerData_uniqueData.asset index e87e9a90..aa00f145 100644 --- a/Assets/Resources/playerdata/playerData_uniqueData.asset +++ b/Assets/Resources/playerdata/playerData_uniqueData.asset @@ -13,18 +13,17 @@ MonoBehaviour: m_Name: playerData_uniqueData m_EditorClassIdentifier: player_currentEXP: 0 - player_currentLevel: 0 - player_coins: 1897049 + player_coins: 1892049 player_material: 0 - emptyExpBottle78000: 0 commonExpBottle78001: 38 mediumExpBottle78002: 1003 superiorExpBottle78003: 0 supremeExpBottle78004: 0 extraordinaryExpBottle78005: 0 celestialExpBottle78006: 0 + uRankingScore: 0 dushMaterial78021: 0 dushMaterial78022: 0 dushMaterial78023: 0 dushMaterial78024: 0 - firstLaunchDate: + firstLaunchDate: 2026-03-16 diff --git a/Assets/Resources/so/ally/30201_ayano.asset b/Assets/Resources/so/ally/30201_ayano.asset index 961e5547..50db618c 100644 --- a/Assets/Resources/so/ally/30201_ayano.asset +++ b/Assets/Resources/so/ally/30201_ayano.asset @@ -15,6 +15,7 @@ MonoBehaviour: ally_heroName: "\u9065\u96EA\u97F3" ally_heroDesignation: ' ' ally_heroID: 30201 + isUnlocked: 1 ally_heroImage: {fileID: 21300000, guid: 991800b03b1fd7f44ad3b3e8eb63d7e0, type: 3} ally_heroProfile: {fileID: 21300000, guid: 991800b03b1fd7f44ad3b3e8eb63d7e0, type: 3} ally_heroSelectIcon: {fileID: 21300000, guid: a993087d325aff74383e7a39ed17df56, type: 3} diff --git a/Assets/Resources/so/ally/30202_yuetao.asset b/Assets/Resources/so/ally/30202_yuetao.asset index 42f3f994..d259a6e7 100644 --- a/Assets/Resources/so/ally/30202_yuetao.asset +++ b/Assets/Resources/so/ally/30202_yuetao.asset @@ -15,6 +15,7 @@ MonoBehaviour: ally_heroName: "\u8DC3\u6843" ally_heroDesignation: ' ' ally_heroID: 30202 + isUnlocked: 1 ally_heroImage: {fileID: 21300000, guid: 5f93d010e49316d4594c1065ce5c6d85, type: 3} ally_heroProfile: {fileID: 21300000, guid: 5f93d010e49316d4594c1065ce5c6d85, type: 3} ally_heroSelectIcon: {fileID: 21300000, guid: a1dae3698f08f314fb44b43933d63665, type: 3} diff --git a/Assets/Resources/so/ally/30203_moyuri.asset b/Assets/Resources/so/ally/30203_moyuri.asset index 8e7988e7..2a072b1a 100644 --- a/Assets/Resources/so/ally/30203_moyuri.asset +++ b/Assets/Resources/so/ally/30203_moyuri.asset @@ -15,6 +15,7 @@ MonoBehaviour: ally_heroName: "\u58A8\u5F69\u79BB" ally_heroDesignation: ' ' ally_heroID: 30203 + isUnlocked: 1 ally_heroImage: {fileID: 21300000, guid: 893e9ceec19c4cc4d9d0326a6a48e2bd, type: 3} ally_heroProfile: {fileID: 21300000, guid: 893e9ceec19c4cc4d9d0326a6a48e2bd, type: 3} ally_heroSelectIcon: {fileID: 21300000, guid: c42ce7fbbee4c9b44abfba00300ed031, type: 3} diff --git a/Assets/Resources/so/ally/30204_lock.asset b/Assets/Resources/so/ally/30204_lock.asset index 44dbb3a0..ee0228ea 100644 --- a/Assets/Resources/so/ally/30204_lock.asset +++ b/Assets/Resources/so/ally/30204_lock.asset @@ -15,6 +15,7 @@ MonoBehaviour: ally_heroName: "\u6D1B\u514B" ally_heroDesignation: ' ' ally_heroID: 30204 + isUnlocked: 1 ally_heroImage: {fileID: 21300000, guid: 76c21cd5ddf49f14286f14aae71c0053, type: 3} ally_heroProfile: {fileID: 21300000, guid: 76c21cd5ddf49f14286f14aae71c0053, type: 3} ally_heroSelectIcon: {fileID: 21300000, guid: 5780fe6bc6ba1d84ba49fe8a7e2a58fb, type: 3} diff --git a/Assets/Resources/so/ally/30205_winnie.asset b/Assets/Resources/so/ally/30205_winnie.asset index 4dffef51..1298bd81 100644 --- a/Assets/Resources/so/ally/30205_winnie.asset +++ b/Assets/Resources/so/ally/30205_winnie.asset @@ -15,6 +15,7 @@ MonoBehaviour: ally_heroName: "\u6E29\u59AE" ally_heroDesignation: ' ' ally_heroID: 30205 + isUnlocked: 1 ally_heroImage: {fileID: 21300000, guid: 37d714dfd7a21f44982af7f86853fa04, type: 3} ally_heroProfile: {fileID: 21300000, guid: 37d714dfd7a21f44982af7f86853fa04, type: 3} ally_heroSelectIcon: {fileID: 21300000, guid: 036e42c18f21faa45975ec21640c76c4, type: 3} diff --git a/Assets/Resources/so/ally/30206_erendira.asset b/Assets/Resources/so/ally/30206_erendira.asset index 92380c82..63d0973d 100644 --- a/Assets/Resources/so/ally/30206_erendira.asset +++ b/Assets/Resources/so/ally/30206_erendira.asset @@ -15,6 +15,7 @@ MonoBehaviour: ally_heroName: "\u7231\u7433\u8FBE\u96C5" ally_heroDesignation: ' ' ally_heroID: 30206 + isUnlocked: 1 ally_heroImage: {fileID: 21300000, guid: b00fdd5328fcc314088a1c0481cea979, type: 3} ally_heroProfile: {fileID: 21300000, guid: b00fdd5328fcc314088a1c0481cea979, type: 3} ally_heroSelectIcon: {fileID: 21300000, guid: 8ec62ab8ffad7644fa1b78bb4b8a273d, type: 3} @@ -94,6 +95,7 @@ MonoBehaviour: damageMultiplierPerfect: 1 missHpLossBase: 10 ally_currentEXP: 1000 + ally_battleDeployCount: 0 availableSkills: [] selectedSkillIndices: primarySkillIndex: -1 diff --git a/Assets/Resources/so/storeSO/77000_defaultItem.asset b/Assets/Resources/so/storeSO/77000_defaultItem.asset index af0864c2..dc4c08f8 100644 --- a/Assets/Resources/so/storeSO/77000_defaultItem.asset +++ b/Assets/Resources/so/storeSO/77000_defaultItem.asset @@ -20,13 +20,15 @@ MonoBehaviour: itemDescription: itemDetailedDescription: "\u54C8\u54C8\u6211\u8BF4\u6211\u662F\u5B54\u5609\u5F6C\u4ED6\u7239\u4F60\u8FD8\u4E0D\u4FE1\u54C8\u54C8\u54C8\u54C8\u54C8\u54C8\u54C8\u554A\u54C8\u54C8\u554A\u54C8\u4F60\u54C8\u725B\u9B54\u916C\u5BBE" isOnShelf: 1 - canbepurchased: 1 + canbepurchased: 0 isHot: 0 user_has_read: 1 itemType: 0 - associatedPlayer: {fileID: 0} + associatedAllyHero: {fileID: 0} associatedSong: {fileID: 0} associatedStoryPassage: {fileID: 0} + storyPassageGrantMode: 0 + associatedStorySonId: -1 costRequirements: - currencyType: 0 amount: 5000 diff --git a/Assets/Resources/so/storeSO/77001_defaultItem 1.asset b/Assets/Resources/so/storeSO/77001_30206.asset similarity index 50% rename from Assets/Resources/so/storeSO/77001_defaultItem 1.asset rename to Assets/Resources/so/storeSO/77001_30206.asset index a646ee72..202a7ee9 100644 --- a/Assets/Resources/so/storeSO/77001_defaultItem 1.asset +++ b/Assets/Resources/so/storeSO/77001_30206.asset @@ -10,23 +10,25 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 74be3a451e4df4c4ab7060c54c58d0d2, type: 3} - m_Name: 77001_defaultItem 1 + m_Name: 77001_30206 m_EditorClassIdentifier: - itemName: "\u65B0\u7248\u9065\u96EA\u97F3" - itemIcon: {fileID: 21300000, guid: eec334d03c52af847bfa12dc839ac536, type: 3} + itemName: "\u7231\u7433\u8FBE\u96C5\u53D8\u8EAB\u5668" + itemIcon: {fileID: 21300000, guid: a2753bc864b1ff84093beb30d9d04892, type: 3} itemID: 77001 itemSinglePurchaseQty: 1 itemPurchaseQuota: 1 - itemDescription: - itemDetailedDescription: + itemDescription: "\u53EC\u5524\u7231\u7433\u8FBE\u96C5\u52A0\u5165\u4F60\u7684\u961F\u4F0D\u3002" + itemDetailedDescription: "\u51C6\u5165\u5076\u50CF\u6863\u6848\u4EE5\u5C55\u5F00\u5BF9\u8BE5\u5076\u50CF\u6863\u6848\u7684\u8BB0\u5F55/\u590D\u6F14\u5DE5\u4F5C\u3002\n\n\u201C\u6211\u53EF\u4E0D\u662F\u4EBA\u8D29\u5B50\u201D" isOnShelf: 1 - canbepurchased: 0 + canbepurchased: 1 isHot: 1 user_has_read: 1 itemType: 0 - associatedPlayer: {fileID: 0} + associatedAllyHero: {fileID: 11400000, guid: 593c39b83808fb742851fb93eaa05963, type: 2} associatedSong: {fileID: 0} associatedStoryPassage: {fileID: 0} + storyPassageGrantMode: 0 + associatedStorySonId: -1 costRequirements: - currencyType: 0 amount: 5000 diff --git a/Assets/Resources/so/storeSO/77001_defaultItem 1.asset.meta b/Assets/Resources/so/storeSO/77001_30206.asset.meta similarity index 100% rename from Assets/Resources/so/storeSO/77001_defaultItem 1.asset.meta rename to Assets/Resources/so/storeSO/77001_30206.asset.meta diff --git a/Assets/Resources/so/storeSO/77002_defaultItem 2.asset b/Assets/Resources/so/storeSO/77002_defaultItem 2.asset deleted file mode 100644 index 1e3efb52..00000000 --- a/Assets/Resources/so/storeSO/77002_defaultItem 2.asset +++ /dev/null @@ -1,34 +0,0 @@ -%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: 74be3a451e4df4c4ab7060c54c58d0d2, type: 3} - m_Name: 77002_defaultItem 2 - m_EditorClassIdentifier: - itemName: "\u65B0\u7248\u9065\u96EA\u97F3" - itemIcon: {fileID: 21300000, guid: eec334d03c52af847bfa12dc839ac536, type: 3} - itemID: 77002 - itemSinglePurchaseQty: 1 - itemPurchaseQuota: 20 - itemDescription: - itemDetailedDescription: - isOnShelf: 1 - canbepurchased: 1 - isHot: 1 - user_has_read: 1 - itemType: 0 - associatedPlayer: {fileID: 0} - associatedSong: {fileID: 0} - associatedStoryPassage: {fileID: 0} - costRequirements: - - currencyType: 0 - amount: 5000 - unlockRequirements: [] - purchasedCount: 20 diff --git a/Assets/Resources/so/storeSO/77003_song1.asset b/Assets/Resources/so/storeSO/77003_song1.asset index 87c51081..ef0cd774 100644 --- a/Assets/Resources/so/storeSO/77003_song1.asset +++ b/Assets/Resources/so/storeSO/77003_song1.asset @@ -20,13 +20,15 @@ MonoBehaviour: itemDescription: itemDetailedDescription: isOnShelf: 1 - canbepurchased: 1 + canbepurchased: 0 isHot: 1 user_has_read: 1 itemType: 1 - associatedPlayer: {fileID: 0} + associatedAllyHero: {fileID: 0} associatedSong: {fileID: 0} associatedStoryPassage: {fileID: 0} + storyPassageGrantMode: 0 + associatedStorySonId: -1 costRequirements: - currencyType: 0 amount: 114514 diff --git a/Assets/Resources/so/storeSO/77004_song2.asset b/Assets/Resources/so/storeSO/77004_song2.asset index dcef93dd..f076c021 100644 --- a/Assets/Resources/so/storeSO/77004_song2.asset +++ b/Assets/Resources/so/storeSO/77004_song2.asset @@ -20,13 +20,15 @@ MonoBehaviour: itemDescription: itemDetailedDescription: isOnShelf: 1 - canbepurchased: 1 + canbepurchased: 0 isHot: 1 user_has_read: 1 itemType: 1 - associatedPlayer: {fileID: 0} + associatedAllyHero: {fileID: 0} associatedSong: {fileID: 0} associatedStoryPassage: {fileID: 0} + storyPassageGrantMode: 0 + associatedStorySonId: -1 costRequirements: [] unlockRequirements: [] purchasedCount: 0 diff --git a/Assets/Resources/so/storeSO/medicines/78000_emperorXPb.asset b/Assets/Resources/so/storeSO/medicines/78000_emperorXPb.asset index c6051523..9c245bff 100644 --- a/Assets/Resources/so/storeSO/medicines/78000_emperorXPb.asset +++ b/Assets/Resources/so/storeSO/medicines/78000_emperorXPb.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 74be3a451e4df4c4ab7060c54c58d0d2, type: 3} m_Name: 78000_emperorXPb m_EditorClassIdentifier: - itemName: "\u7687\u5E1D\u7684\u836F\u6C34" + itemName: "\u7687\u5E1D\u7684\u590D\u6F14\u5355\u5143" itemIcon: {fileID: 21300000, guid: 98a480c46e6c6554c9f5ccf48baa6642, type: 3} itemID: 78000 itemSinglePurchaseQty: 1 @@ -24,9 +24,11 @@ MonoBehaviour: isHot: 1 user_has_read: 1 itemType: 3 - associatedPlayer: {fileID: 0} + associatedAllyHero: {fileID: 0} associatedSong: {fileID: 0} associatedStoryPassage: {fileID: 0} + storyPassageGrantMode: 0 + associatedStorySonId: -1 costRequirements: - currencyType: 0 amount: 1 diff --git a/Assets/Resources/so/storeSO/medicines/78001_normalXPb.asset b/Assets/Resources/so/storeSO/medicines/78001_normalXPb.asset index 7a777eae..02ac5671 100644 --- a/Assets/Resources/so/storeSO/medicines/78001_normalXPb.asset +++ b/Assets/Resources/so/storeSO/medicines/78001_normalXPb.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 74be3a451e4df4c4ab7060c54c58d0d2, type: 3} m_Name: 78001_normalXPb m_EditorClassIdentifier: - itemName: "\u51E1\u54C1\u5076\u50CF\u7075\u6DB2" + itemName: "\u5165\u95E8\u81EA\u52A8\u590D\u6F14\u5355\u5143" itemIcon: {fileID: 21300000, guid: f1d975f2a96c80f45b92690b57431550, type: 3} itemID: 78001 itemSinglePurchaseQty: 1 @@ -24,9 +24,11 @@ MonoBehaviour: isHot: 1 user_has_read: 1 itemType: 3 - associatedPlayer: {fileID: 0} + associatedAllyHero: {fileID: 0} associatedSong: {fileID: 0} associatedStoryPassage: {fileID: 0} + storyPassageGrantMode: 0 + associatedStorySonId: -1 costRequirements: - currencyType: 0 amount: 2000 diff --git a/Assets/Resources/so/storeSO/medicines/78002_mediumXPb.asset b/Assets/Resources/so/storeSO/medicines/78002_mediumXPb.asset index 6b73ada1..3d329c81 100644 --- a/Assets/Resources/so/storeSO/medicines/78002_mediumXPb.asset +++ b/Assets/Resources/so/storeSO/medicines/78002_mediumXPb.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 74be3a451e4df4c4ab7060c54c58d0d2, type: 3} m_Name: 78002_mediumXPb m_EditorClassIdentifier: - itemName: "\u4E2D\u54C1\u5076\u50CF\u7075\u6DB2" + itemName: "\u7ADE\u8D5B\u81EA\u52A8\u590D\u6F14\u5355\u5143" itemIcon: {fileID: 21300000, guid: f9fd35dd32d5a334198a062117a81489, type: 3} itemID: 78002 itemSinglePurchaseQty: 1 @@ -24,9 +24,11 @@ MonoBehaviour: isHot: 1 user_has_read: 1 itemType: 3 - associatedPlayer: {fileID: 0} + associatedAllyHero: {fileID: 0} associatedSong: {fileID: 0} associatedStoryPassage: {fileID: 0} + storyPassageGrantMode: 0 + associatedStorySonId: -1 costRequirements: - currencyType: 0 amount: 8000 diff --git a/Assets/Resources/so/storeSO/medicines/78003_superiorXPb.asset b/Assets/Resources/so/storeSO/medicines/78003_superiorXPb.asset index 914c7aeb..feadc95f 100644 --- a/Assets/Resources/so/storeSO/medicines/78003_superiorXPb.asset +++ b/Assets/Resources/so/storeSO/medicines/78003_superiorXPb.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 74be3a451e4df4c4ab7060c54c58d0d2, type: 3} m_Name: 78003_superiorXPb m_EditorClassIdentifier: - itemName: "\u4E0A\u54C1\u5076\u50CF\u7075\u6DB2" + itemName: "\u8054\u8D5B\u81EA\u52A8\u590D\u6F14\u5355\u5143" itemIcon: {fileID: 21300000, guid: 00a08daafba61f64ea75c35fec0e2df7, type: 3} itemID: 78003 itemSinglePurchaseQty: 1 @@ -24,9 +24,11 @@ MonoBehaviour: isHot: 1 user_has_read: 1 itemType: 3 - associatedPlayer: {fileID: 0} + associatedAllyHero: {fileID: 0} associatedSong: {fileID: 0} associatedStoryPassage: {fileID: 0} + storyPassageGrantMode: 0 + associatedStorySonId: -1 costRequirements: [] unlockRequirements: [] purchasedCount: 0 diff --git a/Assets/Resources/so/storeSO/medicines/78004_supremeXPb.asset b/Assets/Resources/so/storeSO/medicines/78004_supremeXPb.asset index 13487a05..ef1c92b2 100644 --- a/Assets/Resources/so/storeSO/medicines/78004_supremeXPb.asset +++ b/Assets/Resources/so/storeSO/medicines/78004_supremeXPb.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 74be3a451e4df4c4ab7060c54c58d0d2, type: 3} m_Name: 78004_supremeXPb m_EditorClassIdentifier: - itemName: "\u6781\u54C1\u5076\u50CF\u7075\u6DB2" + itemName: "\u51A0\u519B\u81EA\u52A8\u590D\u6F14\u5355\u5143" itemIcon: {fileID: 21300000, guid: 0e7ed0e47c2cf774d9c60ef2ed161c63, type: 3} itemID: 78004 itemSinglePurchaseQty: 1 @@ -24,9 +24,11 @@ MonoBehaviour: isHot: 1 user_has_read: 1 itemType: 3 - associatedPlayer: {fileID: 0} + associatedAllyHero: {fileID: 0} associatedSong: {fileID: 0} associatedStoryPassage: {fileID: 0} + storyPassageGrantMode: 0 + associatedStorySonId: -1 costRequirements: [] unlockRequirements: [] purchasedCount: 0 diff --git a/Assets/Resources/so/storeSO/medicines/78005_extraordinaryXPb.asset b/Assets/Resources/so/storeSO/medicines/78005_extraordinaryXPb.asset index e44fc15b..dad2d67b 100644 --- a/Assets/Resources/so/storeSO/medicines/78005_extraordinaryXPb.asset +++ b/Assets/Resources/so/storeSO/medicines/78005_extraordinaryXPb.asset @@ -24,9 +24,11 @@ MonoBehaviour: isHot: 1 user_has_read: 1 itemType: 3 - associatedPlayer: {fileID: 0} + associatedAllyHero: {fileID: 0} associatedSong: {fileID: 0} associatedStoryPassage: {fileID: 0} + storyPassageGrantMode: 0 + associatedStorySonId: -1 costRequirements: [] unlockRequirements: [] purchasedCount: 0 diff --git a/Assets/Resources/so/storeSO/medicines/78006_celestialXPb.asset b/Assets/Resources/so/storeSO/medicines/78006_celestialXPb.asset index d60fcb36..703c34c5 100644 --- a/Assets/Resources/so/storeSO/medicines/78006_celestialXPb.asset +++ b/Assets/Resources/so/storeSO/medicines/78006_celestialXPb.asset @@ -24,9 +24,11 @@ MonoBehaviour: isHot: 1 user_has_read: 1 itemType: 3 - associatedPlayer: {fileID: 0} + associatedAllyHero: {fileID: 0} associatedSong: {fileID: 0} associatedStoryPassage: {fileID: 0} + storyPassageGrantMode: 0 + associatedStorySonId: -1 costRequirements: [] unlockRequirements: [] purchasedCount: 0 diff --git a/Assets/Resources/so/storeSO/medicines/78011_therainXPb.asset b/Assets/Resources/so/storeSO/medicines/78011_therainXPb.asset index f69042d2..b46723ac 100644 --- a/Assets/Resources/so/storeSO/medicines/78011_therainXPb.asset +++ b/Assets/Resources/so/storeSO/medicines/78011_therainXPb.asset @@ -24,9 +24,11 @@ MonoBehaviour: isHot: 1 user_has_read: 1 itemType: 3 - associatedPlayer: {fileID: 0} + associatedAllyHero: {fileID: 0} associatedSong: {fileID: 0} associatedStoryPassage: {fileID: 0} + storyPassageGrantMode: 0 + associatedStorySonId: -1 costRequirements: - currencyType: 0 amount: 3000 diff --git a/Assets/Resources/so/storeSO/medicines/78012_senior_therainXPb.asset b/Assets/Resources/so/storeSO/medicines/78012_senior_therainXPb.asset index f2f50de8..06a9209b 100644 --- a/Assets/Resources/so/storeSO/medicines/78012_senior_therainXPb.asset +++ b/Assets/Resources/so/storeSO/medicines/78012_senior_therainXPb.asset @@ -24,9 +24,11 @@ MonoBehaviour: isHot: 1 user_has_read: 1 itemType: 3 - associatedPlayer: {fileID: 0} + associatedAllyHero: {fileID: 0} associatedSong: {fileID: 0} associatedStoryPassage: {fileID: 0} + storyPassageGrantMode: 0 + associatedStorySonId: -1 costRequirements: [] unlockRequirements: [] purchasedCount: 0 diff --git a/Assets/Resources/so/storeSO/medicines/78013_super_therainXPb.asset b/Assets/Resources/so/storeSO/medicines/78013_super_therainXPb.asset index 314bf138..f9193282 100644 --- a/Assets/Resources/so/storeSO/medicines/78013_super_therainXPb.asset +++ b/Assets/Resources/so/storeSO/medicines/78013_super_therainXPb.asset @@ -24,9 +24,11 @@ MonoBehaviour: isHot: 1 user_has_read: 1 itemType: 3 - associatedPlayer: {fileID: 0} + associatedAllyHero: {fileID: 0} associatedSong: {fileID: 0} associatedStoryPassage: {fileID: 0} + storyPassageGrantMode: 0 + associatedStorySonId: -1 costRequirements: [] unlockRequirements: [] purchasedCount: 0 diff --git a/Assets/Resources/so/storeSO/medicines/78021_dush_normal.asset b/Assets/Resources/so/storeSO/medicines/78021_dush_normal.asset index bb536d97..048e121f 100644 --- a/Assets/Resources/so/storeSO/medicines/78021_dush_normal.asset +++ b/Assets/Resources/so/storeSO/medicines/78021_dush_normal.asset @@ -24,9 +24,11 @@ MonoBehaviour: isHot: 1 user_has_read: 1 itemType: 3 - associatedPlayer: {fileID: 0} + associatedAllyHero: {fileID: 0} associatedSong: {fileID: 0} associatedStoryPassage: {fileID: 0} + storyPassageGrantMode: 0 + associatedStorySonId: -1 costRequirements: [] unlockRequirements: [] purchasedCount: 0 diff --git a/Assets/Resources/so/storeSO/medicines/78022_dush_medium.asset b/Assets/Resources/so/storeSO/medicines/78022_dush_medium.asset index 1265bcd2..0845372c 100644 --- a/Assets/Resources/so/storeSO/medicines/78022_dush_medium.asset +++ b/Assets/Resources/so/storeSO/medicines/78022_dush_medium.asset @@ -24,9 +24,11 @@ MonoBehaviour: isHot: 1 user_has_read: 1 itemType: 3 - associatedPlayer: {fileID: 0} + associatedAllyHero: {fileID: 0} associatedSong: {fileID: 0} associatedStoryPassage: {fileID: 0} + storyPassageGrantMode: 0 + associatedStorySonId: -1 costRequirements: [] unlockRequirements: [] purchasedCount: 0 diff --git a/Assets/Resources/so/storeSO/medicines/78023_dush_super.asset b/Assets/Resources/so/storeSO/medicines/78023_dush_super.asset index 1c0527b6..c8af3ebe 100644 --- a/Assets/Resources/so/storeSO/medicines/78023_dush_super.asset +++ b/Assets/Resources/so/storeSO/medicines/78023_dush_super.asset @@ -24,9 +24,11 @@ MonoBehaviour: isHot: 1 user_has_read: 1 itemType: 3 - associatedPlayer: {fileID: 0} + associatedAllyHero: {fileID: 0} associatedSong: {fileID: 0} associatedStoryPassage: {fileID: 0} + storyPassageGrantMode: 0 + associatedStorySonId: -1 costRequirements: [] unlockRequirements: [] purchasedCount: 0 diff --git a/Assets/Resources/so/storeSO/medicines/78024_dush_superior.asset b/Assets/Resources/so/storeSO/medicines/78024_dush_superior.asset index 836d6e70..881d18eb 100644 --- a/Assets/Resources/so/storeSO/medicines/78024_dush_superior.asset +++ b/Assets/Resources/so/storeSO/medicines/78024_dush_superior.asset @@ -24,9 +24,11 @@ MonoBehaviour: isHot: 1 user_has_read: 1 itemType: 3 - associatedPlayer: {fileID: 0} + associatedAllyHero: {fileID: 0} associatedSong: {fileID: 0} associatedStoryPassage: {fileID: 0} + storyPassageGrantMode: 0 + associatedStorySonId: -1 costRequirements: [] unlockRequirements: [] purchasedCount: 0 diff --git a/Assets/Resources/song_songIndex/1002001_emilia.asset b/Assets/Resources/song_songIndex/1002001_emilia.asset index 8627f0ea..27c383c5 100644 --- a/Assets/Resources/song_songIndex/1002001_emilia.asset +++ b/Assets/Resources/song_songIndex/1002001_emilia.asset @@ -15,6 +15,7 @@ MonoBehaviour: usernameID: user_TestUser@FloatGaming songName: Beginning of Bansonic songID: 1002001 + isUnlocked: 1 songLength_second: 0 artistName: FloatGaming painter: FloatGaming diff --git a/Assets/Resources/song_songIndex/1002002_arcstar.asset b/Assets/Resources/song_songIndex/1002002_arcstar.asset index 6e87e641..6a3bd480 100644 --- a/Assets/Resources/song_songIndex/1002002_arcstar.asset +++ b/Assets/Resources/song_songIndex/1002002_arcstar.asset @@ -15,6 +15,7 @@ MonoBehaviour: usernameID: user_TestUser@FloatGaming songName: A Lake With Endless Stars songID: 1002002 + isUnlocked: 1 songLength_second: 0 artistName: t404:null painter: FloatGaming diff --git a/Assets/Resources/song_songIndex/1002003_spectrum.asset b/Assets/Resources/song_songIndex/1002003_spectrum.asset index 98900786..14c975c4 100644 --- a/Assets/Resources/song_songIndex/1002003_spectrum.asset +++ b/Assets/Resources/song_songIndex/1002003_spectrum.asset @@ -15,6 +15,7 @@ MonoBehaviour: usernameID: user_TestUser@FloatGaming songName: CFD songID: 1002003 + isUnlocked: 1 songLength_second: 126 artistName: cybermiso painter: FloatGaming diff --git a/Assets/Resources/song_songIndex/1002004_smile.asset b/Assets/Resources/song_songIndex/1002004_smile.asset index ba1b8a63..f7da4255 100644 --- a/Assets/Resources/song_songIndex/1002004_smile.asset +++ b/Assets/Resources/song_songIndex/1002004_smile.asset @@ -15,6 +15,7 @@ MonoBehaviour: usernameID: user_TestUser@FloatGaming songName: "\u30A2\u30C8\u30ED\u30DD\u30B9\u3068\u6700\u679C\u306E\u63A2\u6C42\u8005" songID: 1002004 + isUnlocked: 1 songLength_second: 160 artistName: CK painter: FloatGaming @@ -22,8 +23,8 @@ MonoBehaviour: belongsTo_whichDLC: "\u4E13\u5458\u8BC4\u4F30\u8BA1\u5212#01" bpm: 230 songDuration: 160 - game_enterTimes: 3 - time_totalPlayingTime: 677.65295 + game_enterTimes: 1 + time_totalPlayingTime: 11.868164 illustration: {fileID: 21300000, guid: ecddf7950818f98408cd652e2c2e703f, type: 3} backgroudPIC: {fileID: 21300000, guid: aaf0b10d106e4bd4889cc1e7d2dc8075, type: 3} fullscreen_songPicture: {fileID: 21300000, guid: 5a1b664fd293ec943a5b8cffee700da1, type: 3} @@ -51,11 +52,11 @@ MonoBehaviour: difficultyName: chartFile: {fileID: 4900000, guid: ca9bfdf5df2b55f4284f79ad8e5f41af, type: 3} difficultyDescription: - lastScoreForThisDifficulty: 0 - chartPersonalRecordForThisDifficulty: 0 - idolPersonalRecordForThisDifficulty: 0 - totalPersonalRecordForThisDifficulty: 0 - levelProgressForThisDifficulty: 0 + lastScoreForThisDifficulty: 25758 + chartPersonalRecordForThisDifficulty: 22724 + idolPersonalRecordForThisDifficulty: 3034 + totalPersonalRecordForThisDifficulty: 25758 + levelProgressForThisDifficulty: 0.01908 experienceProvidedForThisDifficulty: 0 - difficulty: 1 difficultyLEVEL: 6 @@ -97,14 +98,14 @@ MonoBehaviour: difficultyName: chartFile: {fileID: 4900000, guid: dc27d9d67f3698646b7b7c3d926eea3c, type: 3} difficultyDescription: - lastScoreForThisDifficulty: 218965 - chartPersonalRecordForThisDifficulty: 330310 - idolPersonalRecordForThisDifficulty: 40316 - totalPersonalRecordForThisDifficulty: 370626 - levelProgressForThisDifficulty: 0.27453777 + lastScoreForThisDifficulty: 0 + chartPersonalRecordForThisDifficulty: 0 + idolPersonalRecordForThisDifficulty: 0 + totalPersonalRecordForThisDifficulty: 0 + levelProgressForThisDifficulty: 0 experienceProvidedForThisDifficulty: 0 - personalRecord: 370626 - current_levelProgress: 0.27453777 + personalRecord: 25758 + current_levelProgress: 0.01908 _if_level_is_EASE: 0 max_comboRecord: 0 thisLevel_selectedDifficultyID: 2 diff --git a/Assets/Resources/song_songIndex/1002005_BaboonBabbler.asset b/Assets/Resources/song_songIndex/1002005_BaboonBabbler.asset index 01fd5b94..de0ebadf 100644 --- a/Assets/Resources/song_songIndex/1002005_BaboonBabbler.asset +++ b/Assets/Resources/song_songIndex/1002005_BaboonBabbler.asset @@ -15,6 +15,7 @@ MonoBehaviour: usernameID: songName: Can U Feel It songID: 1002005 + isUnlocked: 1 songLength_second: 0 artistName: siqlo painter: FloatGaming diff --git a/Assets/Resources/song_songIndex/1002006.asset b/Assets/Resources/song_songIndex/1002006.asset index 61b46feb..a3419e6f 100644 --- a/Assets/Resources/song_songIndex/1002006.asset +++ b/Assets/Resources/song_songIndex/1002006.asset @@ -15,6 +15,7 @@ MonoBehaviour: usernameID: user_TestUser@FloatGaming songName: Paraphiloplace songID: 1002006 + isUnlocked: 1 songLength_second: 141 artistName: Se-U-Ra painter: FloatGaming diff --git a/Assets/Scenes/UI_UI.unity b/Assets/Scenes/UI_UI.unity index 022233d3..cc3d8f2e 100644 --- a/Assets/Scenes/UI_UI.unity +++ b/Assets/Scenes/UI_UI.unity @@ -514,6 +514,85 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 49602642} m_CullTransparentMesh: 1 +--- !u!1 &51460320 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 51460321} + - component: {fileID: 51460323} + - component: {fileID: 51460322} + m_Layer: 5 + m_Name: uLevelTitle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &51460321 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 51460320} + 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: 410197607} + 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.5, y: 28.35} + m_SizeDelta: {x: 204.953, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &51460322 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 51460320} + 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: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u53EC\u5524\u5E08\u7B49\u7EA723" +--- !u!222 &51460323 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 51460320} + m_CullTransparentMesh: 1 --- !u!1 &54123793 GameObject: m_ObjectHideFlags: 0 @@ -767,6 +846,42 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 62411982} m_CullTransparentMesh: 1 +--- !u!1 &65025431 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 65025432} + 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 &65025432 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 65025431} + 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: 496700367} + m_Father: {fileID: 145429841} + 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: -4.9999847, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &78953666 GameObject: m_ObjectHideFlags: 0 @@ -1184,6 +1299,42 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 94622197} m_CullTransparentMesh: 1 +--- !u!1 &110844976 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 110844977} + m_Layer: 5 + m_Name: btms + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &110844977 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 110844976} + 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: 375711255} + m_Father: {fileID: 1421889018} + 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 &112267833 GameObject: m_ObjectHideFlags: 0 @@ -1658,6 +1809,257 @@ RectTransform: m_AnchoredPosition: {x: -135.9, y: 1.1} m_SizeDelta: {x: 100, y: 100} m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &145429840 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 145429841} + - component: {fileID: 145429842} + m_Layer: 5 + m_Name: Slider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &145429841 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 145429840} + 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: 1973678822} + - {fileID: 65025432} + - {fileID: 1917969550} + - {fileID: 590173765} + - {fileID: 1125495770} + - {fileID: 2018781964} + m_Father: {fileID: 1031423005} + 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: 480, y: 60} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &145429842 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 145429840} + 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: 1646428910} + m_FillRect: {fileID: 496700367} + m_HandleRect: {fileID: 1646428909} + m_Direction: 0 + m_MinValue: 0 + m_MaxValue: 1 + m_WholeNumbers: 0 + m_Value: 0.5 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &147206994 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 147206995} + - component: {fileID: 147206997} + - component: {fileID: 147206996} + m_Layer: 5 + m_Name: perf + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &147206995 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 147206994} + 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: 1491610694} + 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: 373.3, y: 0} + m_SizeDelta: {x: 77.732, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &147206996 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 147206994} + 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: 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: "\u8868\u73B0" +--- !u!222 &147206997 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 147206994} + m_CullTransparentMesh: 1 +--- !u!1 &162819069 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 162819070} + - component: {fileID: 162819072} + - component: {fileID: 162819071} + m_Layer: 5 + m_Name: score + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &162819070 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 162819069} + 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: 1491610694} + 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: 471.02777, y: 0} + m_SizeDelta: {x: 94.519, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &162819071 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 162819069} + 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: 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: "\u603B\u5206" +--- !u!222 &162819072 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 162819069} + m_CullTransparentMesh: 1 --- !u!1 &167119533 GameObject: m_ObjectHideFlags: 0 @@ -1870,6 +2272,177 @@ MonoBehaviour: m_PersistentCalls: m_Calls: [] m_IsOn: 1 +--- !u!1 &183490646 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 183490647} + - component: {fileID: 183490650} + - component: {fileID: 183490649} + - component: {fileID: 183490648} + m_Layer: 5 + m_Name: Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &183490647 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 183490646} + 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: 2129776721} + m_Father: {fileID: 1395378500} + 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: -17, y: -17} + m_Pivot: {x: 0, y: 1} +--- !u!114 &183490648 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 183490646} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!114 &183490649 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 183490646} + 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: 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!222 &183490650 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 183490646} + m_CullTransparentMesh: 1 +--- !u!1 &207157884 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 207157885} + - component: {fileID: 207157887} + - component: {fileID: 207157886} + m_Layer: 5 + m_Name: uRGH_Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &207157885 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 207157884} + 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: 1309418663} + - {fileID: 1830199934} + m_Father: {fileID: 772272309} + 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: 77.499985, y: 14.039987} + m_SizeDelta: {x: 204.953, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &207157886 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 207157884} + 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: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u6E38\u620F\u8BB0\u5F55" +--- !u!222 &207157887 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 207157884} + m_CullTransparentMesh: 1 --- !u!1 &213968804 GameObject: m_ObjectHideFlags: 0 @@ -1920,6 +2493,85 @@ RectTransform: m_AnchoredPosition: {x: 276.68, y: 359.7} m_SizeDelta: {x: 100, y: 100} m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &214186411 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 214186412} + - component: {fileID: 214186414} + - component: {fileID: 214186413} + m_Layer: 5 + m_Name: detailed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &214186412 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 214186411} + 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: [] + m_Father: {fileID: 788635119} + 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.065, y: -30.90999} + m_SizeDelta: {x: 395.13, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &214186413 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 214186411} + 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: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u6839\u636E\u7528\u6237\u6E38\u620F\u884C\u4E3A\u52A8\u6001\u8BC4\u4EF7\u6E38\u620F\u5B9E\u529B\u6307\u6807" +--- !u!222 &214186414 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 214186411} + m_CullTransparentMesh: 1 --- !u!1 &216265373 GameObject: m_ObjectHideFlags: 0 @@ -2172,6 +2824,84 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 244145260} m_CullTransparentMesh: 1 +--- !u!1 &246070007 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 246070008} + - component: {fileID: 246070010} + - component: {fileID: 246070009} + m_Layer: 5 + m_Name: dGHbtm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &246070008 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 246070007} + 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: 550366999} + - {fileID: 1491610694} + - {fileID: 1395378500} + m_Father: {fileID: 772272309} + 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: 198, y: -153} + m_SizeDelta: {x: 1920, y: 1080} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &246070009 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 246070007} + 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.78431374} + 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!222 &246070010 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 246070007} + m_CullTransparentMesh: 1 --- !u!1 &249451734 GameObject: m_ObjectHideFlags: 0 @@ -2322,6 +3052,85 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 266600607} m_CullTransparentMesh: 1 +--- !u!1 &284090946 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 284090947} + - component: {fileID: 284090949} + - component: {fileID: 284090948} + m_Layer: 5 + m_Name: lvl + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &284090947 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 284090946} + 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: 1491610694} + 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: 563.102, y: 0} + m_SizeDelta: {x: 61.962, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &284090948 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 284090946} + 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: 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: "\u8BC4\u7EA7" +--- !u!222 &284090949 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 284090946} + m_CullTransparentMesh: 1 --- !u!1 &285457078 GameObject: m_ObjectHideFlags: 0 @@ -3105,6 +3914,319 @@ RectTransform: m_CorrespondingSourceObject: {fileID: 4103495235733383309, guid: 8db6dd820b152984980f7fd2124138c3, type: 3} m_PrefabInstance: {fileID: 8850050739472999427} m_PrefabAsset: {fileID: 0} +--- !u!1 &331256505 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 331256506} + - component: {fileID: 331256509} + - component: {fileID: 331256508} + - component: {fileID: 331256507} + m_Layer: 5 + m_Name: Scrollbar Vertical + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &331256506 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 331256505} + 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: 1173554204} + m_Father: {fileID: 1395378500} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: -17} + m_Pivot: {x: 1, y: 1} +--- !u!114 &331256507 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 331256505} + 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: 337857325} + m_HandleRect: {fileID: 337857324} + m_Direction: 2 + m_Value: 0 + m_Size: 1 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &331256508 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 331256505} + 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!222 &331256509 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 331256505} + m_CullTransparentMesh: 1 +--- !u!1 &332035275 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 332035276} + - component: {fileID: 332035278} + - component: {fileID: 332035277} + m_Layer: 5 + m_Name: headIMG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &332035276 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 332035275} + 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: 610356957} + m_Father: {fileID: 375711255} + 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: 367.28} + m_SizeDelta: {x: 1015.086, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &332035277 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 332035275} + 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: 9ebd9ce7600225b48a92c3900b8188fc, 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: 0.5 +--- !u!222 &332035278 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 332035275} + m_CullTransparentMesh: 1 +--- !u!1 &337857323 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 337857324} + - component: {fileID: 337857326} + - component: {fileID: 337857325} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &337857324 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 337857323} + 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: 1173554204} + 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!114 &337857325 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 337857323} + 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!222 &337857326 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 337857323} + m_CullTransparentMesh: 1 +--- !u!1 &338059264 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 338059265} + m_Layer: 5 + m_Name: rksBar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &338059265 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 338059264} + 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: 788635119} + m_Father: {fileID: 662689827} + 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: 304, y: -20} + m_SizeDelta: {x: 480, y: 60} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &341324965 GameObject: m_ObjectHideFlags: 0 @@ -3632,6 +4754,83 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 372578917} m_CullTransparentMesh: 1 +--- !u!1 &375711254 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 375711255} + - component: {fileID: 375711257} + - component: {fileID: 375711256} + m_Layer: 5 + m_Name: btmIMG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &375711255 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 375711254} + 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: 571417412} + - {fileID: 332035276} + m_Father: {fileID: 110844977} + 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: 231.865, y: -5.734} + m_SizeDelta: {x: 1015.086, y: 732.053} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &375711256 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 375711254} + 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.39215687} + 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!222 &375711257 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 375711254} + m_CullTransparentMesh: 1 --- !u!1 &382440098 GameObject: m_ObjectHideFlags: 0 @@ -4286,6 +5485,209 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0, y: 0} +--- !u!1 &410197606 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 410197607} + - component: {fileID: 410197609} + - component: {fileID: 410197608} + m_Layer: 5 + m_Name: btms + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &410197607 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 410197606} + 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: 51460321} + - {fileID: 1031423005} + m_Father: {fileID: 1076353774} + 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: 209, y: -14.31} + m_SizeDelta: {x: 538.358, y: 128.618} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &410197608 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 410197606} + 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.39215687} + 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!222 &410197609 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 410197606} + m_CullTransparentMesh: 1 +--- !u!1 &423473812 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 423473813} + - component: {fileID: 423473816} + - component: {fileID: 423473815} + - component: {fileID: 423473814} + m_Layer: 5 + m_Name: Scrollbar Horizontal + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &423473813 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 423473812} + 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: 1152624070} + m_Father: {fileID: 1395378500} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -17, y: 20} + m_Pivot: {x: 0, y: 0} +--- !u!114 &423473814 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 423473812} + 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: 1246217655} + m_HandleRect: {fileID: 1246217654} + m_Direction: 0 + m_Value: 0 + m_Size: 1 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &423473815 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 423473812} + 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!222 &423473816 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 423473812} + m_CullTransparentMesh: 1 --- !u!1 &440093346 GameObject: m_ObjectHideFlags: 0 @@ -4686,6 +6088,81 @@ MonoBehaviour: default_card_icon_sprite: {fileID: 4997328413415617422, guid: a8ff5cf9bafe9f544bfde136473da3cc, type: 3} refreshButton: {fileID: 54123795} h5RootPath: +--- !u!1 &496700366 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 496700367} + - component: {fileID: 496700369} + - component: {fileID: 496700368} + m_Layer: 5 + m_Name: Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &496700367 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 496700366} + 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: 65025432} + 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!114 &496700368 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 496700366} + 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!222 &496700369 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 496700366} + m_CullTransparentMesh: 1 --- !u!1 &496948787 GameObject: m_ObjectHideFlags: 0 @@ -4944,6 +6421,7 @@ RectTransform: - {fileID: 87627464} - {fileID: 1951881624} - {fileID: 1450048253} + - {fileID: 1789653745} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -5132,6 +6610,42 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 502784726} m_CullTransparentMesh: 1 +--- !u!1 &514900160 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 514900161} + 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 &514900161 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 514900160} + 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: 1186964603} + m_Father: {fileID: 788635119} + 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 &516900108 GameObject: m_ObjectHideFlags: 0 @@ -5286,6 +6800,159 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 533359386} m_CullTransparentMesh: 1 +--- !u!1 &534860750 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 534860751} + - component: {fileID: 534860753} + - component: {fileID: 534860752} + m_Layer: 5 + m_Name: btmImg (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &534860751 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 534860750} + 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: 707237088} + 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 &534860752 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 534860750} + 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.39215687} + 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: e2e7c16ba8fa2c94fb4675486411ddc7, 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!222 &534860753 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 534860750} + m_CullTransparentMesh: 1 +--- !u!1 &550366998 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 550366999} + - component: {fileID: 550367001} + - component: {fileID: 550367000} + m_Layer: 5 + m_Name: detailGameHistory + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &550366999 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 550366998} + 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: 2126536768} + - {fileID: 1496686036} + - {fileID: 1998430573} + m_Father: {fileID: 246070008} + 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.000030517578} + m_SizeDelta: {x: 800, y: 900} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &550367000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 550366998} + 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.5882353} + 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!222 &550367001 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 550366998} + m_CullTransparentMesh: 1 --- !u!1 &555995709 stripped GameObject: m_CorrespondingSourceObject: {fileID: 8129187979289175592, guid: ec30ec2474f795d4ab4fccbefe19b02a, type: 3} @@ -5472,6 +7139,81 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 565481593} m_CullTransparentMesh: 1 +--- !u!1 &571417411 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 571417412} + - component: {fileID: 571417414} + - component: {fileID: 571417413} + m_Layer: 5 + m_Name: headIMGshadow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &571417412 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 571417411} + 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: 375711255} + 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: 354.92} + m_SizeDelta: {x: 1015.086, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &571417413 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 571417411} + 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: 0.75 +--- !u!222 &571417414 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 571417411} + m_CullTransparentMesh: 1 --- !u!1 &572766625 GameObject: m_ObjectHideFlags: 0 @@ -5748,6 +7490,85 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 588873762} m_CullTransparentMesh: 1 +--- !u!1 &590173764 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 590173765} + - component: {fileID: 590173767} + - component: {fileID: 590173766} + m_Layer: 5 + m_Name: nowLevel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &590173765 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 590173764} + 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: 145429841} + 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.6, y: -30} + m_SizeDelta: {x: 458.803, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &590173766 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 590173764} + 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: 8b8373b0af11dca46b89be60dbe469f8, 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: 23 +--- !u!222 &590173767 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 590173764} + m_CullTransparentMesh: 1 --- !u!1 &597003353 GameObject: m_ObjectHideFlags: 0 @@ -5862,6 +7683,85 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 600355259} m_CullTransparentMesh: 1 +--- !u!1 &610356956 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 610356957} + - component: {fileID: 610356959} + - component: {fileID: 610356958} + m_Layer: 5 + m_Name: title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &610356957 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 610356956} + 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: 332035276} + 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: 1000, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &610356958 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 610356956} + 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: cc180dff846d13a4d88ddaed6f77e5cd, type: 3} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u7D22\u5C3C\u5A05-\u6E38\u620F\u7528\u6237\u6570\u636E\u5206\u6790\u7CFB\u7EDF\u57FA\u7840(\u7B2C\u4E8C\u7248\uFF0C\u6D6E\u52A8\u6E38\u620F\u51FA\u7248\u793E)" +--- !u!222 &610356959 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 610356956} + m_CullTransparentMesh: 1 --- !u!1 &631515564 stripped GameObject: m_CorrespondingSourceObject: {fileID: 775714823646948286, guid: 4c26aec0fc471c24d94487eff6821e14, type: 3} @@ -6269,6 +8169,43 @@ RectTransform: m_CorrespondingSourceObject: {fileID: 2237038759832056091, guid: 06bb6d3a45697374ab4f5ff36356d138, type: 3} m_PrefabInstance: {fileID: 392147040} m_PrefabAsset: {fileID: 0} +--- !u!1 &662689826 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 662689827} + m_Layer: 5 + m_Name: uRks + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &662689827 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 662689826} + 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: 813977599} + - {fileID: 338059265} + m_Father: {fileID: 1421889018} + 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: 246, y: 275} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &666429704 GameObject: m_ObjectHideFlags: 0 @@ -6344,6 +8281,44 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 666429704} m_CullTransparentMesh: 1 +--- !u!1 &702835299 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 702835300} + m_Layer: 5 + m_Name: userData + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &702835300 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 702835299} + 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: 1356349442} + - {fileID: 1796584395} + - {fileID: 794562997} + m_Father: {fileID: 1789653745} + 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: -562, y: 153} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &704880547 GameObject: m_ObjectHideFlags: 0 @@ -6419,6 +8394,44 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 704880547} m_CullTransparentMesh: 1 +--- !u!1 &707237087 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 707237088} + m_Layer: 5 + m_Name: btms + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &707237088 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 707237087} + 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: 1306612443} + - {fileID: 534860751} + - {fileID: 1867224386} + m_Father: {fileID: 1789653745} + 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 &707385048 GameObject: m_ObjectHideFlags: 0 @@ -6659,6 +8672,81 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 712014534} m_CullTransparentMesh: 1 +--- !u!1 &721097723 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 721097724} + - component: {fileID: 721097726} + - component: {fileID: 721097725} + m_Layer: 5 + m_Name: btms + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &721097724 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 721097723} + 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: 772272309} + 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: 291.674, y: -102.42} + m_SizeDelta: {x: 703.706, y: 304.838} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &721097725 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 721097723} + 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.39215687} + 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!222 &721097726 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 721097723} + m_CullTransparentMesh: 1 --- !u!1 &721269097 GameObject: m_ObjectHideFlags: 0 @@ -7067,6 +9155,85 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 737938990} m_CullTransparentMesh: 1 +--- !u!1 &743945640 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 743945641} + - component: {fileID: 743945643} + - component: {fileID: 743945642} + m_Layer: 5 + m_Name: dif + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &743945641 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 743945640} + 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: 1491610694} + 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: 292.0909, y: 0} + m_SizeDelta: {x: 77.732, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &743945642 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 743945640} + 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: 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: "\u6240\u9009\u96BE\u5EA6" +--- !u!222 &743945643 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 743945640} + m_CullTransparentMesh: 1 --- !u!1 &749472730 GameObject: m_ObjectHideFlags: 0 @@ -7482,6 +9649,66 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 763799881} m_CullTransparentMesh: 1 +--- !u!1 &772272308 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 772272309} + - component: {fileID: 772272310} + m_Layer: 5 + m_Name: uRecentGameHistory + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &772272309 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 772272308} + 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: 721097724} + - {fileID: 207157885} + - {fileID: 926868298} + - {fileID: 1428706863} + - {fileID: 1886228763} + - {fileID: 246070008} + m_Father: {fileID: 1421889018} + 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: -198, y: 153} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &772272310 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 772272308} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d4e289acd8282f743864eb651643e526, type: 3} + m_Name: + m_EditorClassIdentifier: + gameHistoryPrefab: {fileID: 4621517492616896599, guid: 8c7f1125b672ba54fb24d10e0cc4095a, type: 3} + gameHistoryParent: {fileID: 1886228763} + dGameHistoryParent: {fileID: 2129776721} + more_gameHistory: {fileID: 246070007} + more_gameHistoryButton: {fileID: 926868299} + shut_gameHistoryButton: {fileID: 2126536769} --- !u!1 &773165312 GameObject: m_ObjectHideFlags: 0 @@ -7557,6 +9784,98 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 773165312} m_CullTransparentMesh: 1 +--- !u!1 &788635118 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 788635119} + - component: {fileID: 788635120} + m_Layer: 5 + m_Name: Slider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &788635119 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 788635118} + 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: 1132610714} + - {fileID: 514900161} + - {fileID: 1071281850} + - {fileID: 873302871} + - {fileID: 214186412} + m_Father: {fileID: 338059265} + 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: -36.12, y: 0} + m_SizeDelta: {x: 414.611, y: 60} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &788635120 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 788635118} + 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: 1005375593} + m_FillRect: {fileID: 1186964603} + m_HandleRect: {fileID: 1005375592} + m_Direction: 0 + m_MinValue: 0 + m_MaxValue: 1 + m_WholeNumbers: 0 + m_Value: 0.5 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] --- !u!1 &788811069 GameObject: m_ObjectHideFlags: 0 @@ -7794,6 +10113,82 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: -20, y: -20} m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &794562996 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 794562997} + - component: {fileID: 794562998} + - component: {fileID: 794562999} + m_Layer: 5 + m_Name: grid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &794562997 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 794562996} + 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: 818662912} + m_Father: {fileID: 702835300} + 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: -310} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &794562998 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 794562996} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8a8695521f0d02e499659fee002a26c2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 1 + m_StartCorner: 0 + m_StartAxis: 0 + m_CellSize: {x: 200, y: 50} + m_Spacing: {x: 0, y: 10} + m_Constraint: 1 + m_ConstraintCount: 2 +--- !u!114 &794562999 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 794562996} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 2 + m_VerticalFit: 2 --- !u!1 &806335507 GameObject: m_ObjectHideFlags: 0 @@ -7918,6 +10313,127 @@ MonoBehaviour: m_OnClick: m_PersistentCalls: m_Calls: [] +--- !u!1 &806644804 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 806644805} + - component: {fileID: 806644808} + - component: {fileID: 806644807} + - component: {fileID: 806644806} + m_Layer: 5 + m_Name: lookLevelReward + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &806644805 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 806644804} + 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: 1414860170} + m_Father: {fileID: 1076353774} + 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: 352, y: 15.9} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &806644806 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 806644804} + 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: 806644807} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &806644807 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 806644804} + 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: 2 +--- !u!222 &806644808 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 806644804} + m_CullTransparentMesh: 1 --- !u!1 &806830621 GameObject: m_ObjectHideFlags: 0 @@ -7993,6 +10509,87 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 806830621} m_CullTransparentMesh: 1 +--- !u!1 &813977598 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 813977599} + - component: {fileID: 813977601} + - component: {fileID: 813977600} + m_Layer: 5 + m_Name: btms + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &813977599 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 813977598} + 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: 1079750583} + m_Father: {fileID: 662689827} + 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: 253.205, y: -14.31} + m_SizeDelta: {x: 449.948, y: 128.618} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &813977600 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 813977598} + 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.39215687} + 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!222 &813977601 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 813977598} + m_CullTransparentMesh: 1 +--- !u!224 &818662912 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 7358548625640972063, guid: 54a993fe0ba0c4b48b7486f77418c8fc, type: 3} + m_PrefabInstance: {fileID: 4316252188104159810} + m_PrefabAsset: {fileID: 0} --- !u!1 &820550693 GameObject: m_ObjectHideFlags: 0 @@ -9390,6 +11987,85 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 854772672} m_CullTransparentMesh: 1 +--- !u!1 &873302870 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 873302871} + - component: {fileID: 873302873} + - component: {fileID: 873302872} + m_Layer: 5 + m_Name: rks + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &873302871 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 873302870} + 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: 788635119} + 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.601, y: 0.0000076293945} + m_SizeDelta: {x: 375, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &873302872 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 873302870} + 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: 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: 321051 +--- !u!222 &873302873 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 873302870} + m_CullTransparentMesh: 1 --- !u!1001 &882621946 PrefabInstance: m_ObjectHideFlags: 0 @@ -9570,6 +12246,85 @@ PrefabInstance: insertIndex: -1 addedObject: {fileID: 555995710} m_SourcePrefab: {fileID: 100100000, guid: ec30ec2474f795d4ab4fccbefe19b02a, type: 3} +--- !u!1 &887127621 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 887127622} + - component: {fileID: 887127624} + - component: {fileID: 887127623} + 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 &887127622 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 887127621} + 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: 926868298} + 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!114 &887127623 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 887127621} + 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: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u67E5\u770B\u6700\u8FD1100\u573A\u6218\u7EE9" +--- !u!222 &887127624 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 887127621} + m_CullTransparentMesh: 1 --- !u!1 &889444234 GameObject: m_ObjectHideFlags: 0 @@ -9750,6 +12505,127 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 100, y: 100} m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &926868297 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 926868298} + - component: {fileID: 926868301} + - component: {fileID: 926868300} + - component: {fileID: 926868299} + m_Layer: 5 + m_Name: full + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &926868298 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 926868297} + 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: 887127622} + m_Father: {fileID: 772272309} + 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: 534.3, y: 15.9} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &926868299 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 926868297} + 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: 926868300} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &926868300 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 926868297} + 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: 2 +--- !u!222 &926868301 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 926868297} + m_CullTransparentMesh: 1 --- !u!1 &938066847 GameObject: m_ObjectHideFlags: 0 @@ -12142,6 +15018,160 @@ MonoBehaviour: m_hasFontAssetChanged: 0 m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &1001208684 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1001208685} + - component: {fileID: 1001208687} + - component: {fileID: 1001208686} + m_Layer: 5 + m_Name: date + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1001208685 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1001208684} + 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: 1428706863} + 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: 28.398, y: 0} + m_SizeDelta: {x: 81.292, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1001208686 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1001208684} + 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: 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: "\u65E5\u671F" +--- !u!222 &1001208687 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1001208684} + m_CullTransparentMesh: 1 +--- !u!1 &1005375591 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1005375592} + - component: {fileID: 1005375594} + - component: {fileID: 1005375593} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1005375592 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1005375591} + 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: 1071281850} + 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!114 &1005375593 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1005375591} + 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!222 &1005375594 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1005375591} + m_CullTransparentMesh: 1 --- !u!1 &1006929740 GameObject: m_ObjectHideFlags: 0 @@ -12421,6 +15451,121 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1027582305} m_CullTransparentMesh: 1 +--- !u!1 &1028861005 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1028861006} + - component: {fileID: 1028861008} + - component: {fileID: 1028861007} + m_Layer: 5 + m_Name: name + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1028861006 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1028861005} + 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: 1428706863} + 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: 167.70393, y: 0} + m_SizeDelta: {x: 153.019, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1028861007 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1028861005} + 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: 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\u5361\u540D" +--- !u!222 &1028861008 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1028861005} + m_CullTransparentMesh: 1 +--- !u!1 &1031423004 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1031423005} + m_Layer: 5 + m_Name: xpBar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1031423005 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1031423004} + 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: 145429841} + m_Father: {fileID: 410197607} + 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: 10, y: -6.6} + m_SizeDelta: {x: 480, y: 60} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &1038059340 GameObject: m_ObjectHideFlags: 0 @@ -12980,6 +16125,11 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1059752209} m_CullTransparentMesh: 1 +--- !u!224 &1063489895 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 7028528044515112815, guid: 8c7f1125b672ba54fb24d10e0cc4095a, type: 3} + m_PrefabInstance: {fileID: 8492766092057312233} + m_PrefabAsset: {fileID: 0} --- !u!1 &1064847978 GameObject: m_ObjectHideFlags: 0 @@ -13145,6 +16295,42 @@ MonoBehaviour: m_OnValueChanged: m_PersistentCalls: m_Calls: [] +--- !u!1 &1071281849 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1071281850} + 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 &1071281850 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1071281849} + 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: 1005375592} + m_Father: {fileID: 788635119} + 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 &1074853035 GameObject: m_ObjectHideFlags: 0 @@ -13220,6 +16406,43 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1074853035} m_CullTransparentMesh: 1 +--- !u!1 &1076353773 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1076353774} + m_Layer: 5 + m_Name: uLevel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1076353774 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1076353773} + 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: 410197607} + - {fileID: 806644805} + m_Father: {fileID: 1421889018} + 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: -198, y: 275} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &1078607577 GameObject: m_ObjectHideFlags: 0 @@ -13341,6 +16564,85 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1078607577} m_CullTransparentMesh: 1 +--- !u!1 &1079750582 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1079750583} + - component: {fileID: 1079750585} + - component: {fileID: 1079750584} + m_Layer: 5 + m_Name: uRksTitle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1079750583 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1079750582} + 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: 813977599} + 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: -3.945, y: 28.35} + m_SizeDelta: {x: 390.661, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1079750584 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1079750582} + 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: 8b8373b0af11dca46b89be60dbe469f8, type: 3} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: RANKINGSCORE +--- !u!222 &1079750585 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1079750582} + m_CullTransparentMesh: 1 --- !u!1 &1084511062 GameObject: m_ObjectHideFlags: 0 @@ -13503,6 +16805,85 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1112537352} m_CullTransparentMesh: 1 +--- !u!1 &1121018383 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1121018384} + - component: {fileID: 1121018386} + - component: {fileID: 1121018385} + 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 &1121018384 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1121018383} + 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: 2126536768} + 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!114 &1121018385 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1121018383} + 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: 24 + 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: "\u5173\u95ED" +--- !u!222 &1121018386 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1121018383} + m_CullTransparentMesh: 1 --- !u!1 &1121208795 GameObject: m_ObjectHideFlags: 0 @@ -13624,6 +17005,85 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1121208795} m_CullTransparentMesh: 1 +--- !u!1 &1125495769 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1125495770} + - component: {fileID: 1125495772} + - component: {fileID: 1125495771} + m_Layer: 5 + m_Name: nextLevel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1125495770 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1125495769} + 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: 145429841} + 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.6, y: -30} + m_SizeDelta: {x: 458.803, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1125495771 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1125495769} + 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: 8b8373b0af11dca46b89be60dbe469f8, type: 3} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 24 +--- !u!222 &1125495772 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1125495769} + m_CullTransparentMesh: 1 --- !u!1 &1131461565 GameObject: m_ObjectHideFlags: 0 @@ -13699,6 +17159,81 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1131461565} m_CullTransparentMesh: 1 +--- !u!1 &1132610713 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1132610714} + - component: {fileID: 1132610716} + - component: {fileID: 1132610715} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1132610714 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1132610713} + 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: 788635119} + 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.0660095, y: 0} + m_SizeDelta: {x: -19.472, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1132610715 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1132610713} + 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: 2561534620446350566, guid: 23a48ca1e983a4c47971fcf7eab26b89, 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!222 &1132610716 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1132610713} + m_CullTransparentMesh: 1 --- !u!1 &1137293413 GameObject: m_ObjectHideFlags: 0 @@ -13864,6 +17399,42 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1140658513} m_CullTransparentMesh: 1 +--- !u!1 &1152624069 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1152624070} + 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 &1152624070 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1152624069} + 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: 1246217654} + m_Father: {fileID: 423473813} + 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 &1155171499 GameObject: m_ObjectHideFlags: 0 @@ -14017,6 +17588,117 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 100, y: 100} m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1173554203 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1173554204} + 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 &1173554204 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1173554203} + 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: 337857324} + m_Father: {fileID: 331256506} + 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 &1186964602 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1186964603} + - component: {fileID: 1186964605} + - component: {fileID: 1186964604} + m_Layer: 5 + m_Name: Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1186964603 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1186964602} + 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: 514900161} + 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!114 &1186964604 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1186964602} + 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: 4 +--- !u!222 &1186964605 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1186964602} + m_CullTransparentMesh: 1 --- !u!1 &1194707382 GameObject: m_ObjectHideFlags: 0 @@ -14319,6 +18001,81 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1231719852} m_CullTransparentMesh: 1 +--- !u!1 &1246217653 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1246217654} + - component: {fileID: 1246217656} + - component: {fileID: 1246217655} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1246217654 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1246217653} + 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: 1152624070} + 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!114 &1246217655 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1246217653} + 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!222 &1246217656 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1246217653} + m_CullTransparentMesh: 1 --- !u!1001 &1251615395 PrefabInstance: m_ObjectHideFlags: 0 @@ -15455,6 +19212,241 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1261139687} m_CullTransparentMesh: 1 +--- !u!1 &1263320722 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1263320723} + - component: {fileID: 1263320725} + - component: {fileID: 1263320724} + m_Layer: 5 + m_Name: name + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1263320723 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1263320722} + 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: 1491610694} + 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: 167.70393, y: 0} + m_SizeDelta: {x: 153.019, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1263320724 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1263320722} + 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: 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\u5361\u540D" +--- !u!222 &1263320725 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1263320722} + m_CullTransparentMesh: 1 +--- !u!1 &1273973765 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1273973766} + - component: {fileID: 1273973768} + - component: {fileID: 1273973767} + m_Layer: 5 + m_Name: txtbtm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1273973766 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1273973765} + 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: 1425393343} + - {fileID: 1490697076} + m_Father: {fileID: 1796584395} + 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: -252.7} + m_SizeDelta: {x: 501, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1273973767 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1273973765} + 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: 9ebd9ce7600225b48a92c3900b8188fc, 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!222 &1273973768 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1273973765} + m_CullTransparentMesh: 1 +--- !u!1 &1276875396 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1276875397} + - component: {fileID: 1276875399} + - component: {fileID: 1276875398} + m_Layer: 5 + m_Name: perf + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1276875397 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1276875396} + 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: 1428706863} + 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: 373.3, y: 0} + m_SizeDelta: {x: 77.732, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1276875398 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1276875396} + 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: 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: "\u8868\u73B0" +--- !u!222 &1276875399 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1276875396} + m_CullTransparentMesh: 1 --- !u!1 &1284781885 GameObject: m_ObjectHideFlags: 0 @@ -15727,6 +19719,81 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1305279323} m_CullTransparentMesh: 1 +--- !u!1 &1306612442 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1306612443} + - component: {fileID: 1306612445} + - component: {fileID: 1306612444} + m_Layer: 5 + m_Name: btmImg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1306612443 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1306612442} + 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: 707237088} + 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 &1306612444 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1306612442} + 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: e1e1ae5f182a06a4daf51516441836fc, 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!222 &1306612445 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1306612442} + m_CullTransparentMesh: 1 --- !u!1 &1309000410 GameObject: m_ObjectHideFlags: 0 @@ -15763,6 +19830,81 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 1920, y: 1080} m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1309418662 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1309418663} + - component: {fileID: 1309418665} + - component: {fileID: 1309418664} + m_Layer: 5 + m_Name: fab + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1309418663 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1309418662} + 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: 207157885} + 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: -120.395, y: 0} + m_SizeDelta: {x: 16.205, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1309418664 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1309418662} + 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.6039216, g: 0.76470596, b: 0.98823535, 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: 100 +--- !u!222 &1309418665 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1309418662} + m_CullTransparentMesh: 1 --- !u!1 &1311485915 GameObject: m_ObjectHideFlags: 0 @@ -16503,6 +20645,81 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1356349441 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1356349442} + - component: {fileID: 1356349444} + - component: {fileID: 1356349443} + m_Layer: 5 + m_Name: profileBoarder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1356349442 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356349441} + 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: 702835300} + 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: 400, y: 400} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1356349443 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356349441} + 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: 9ebd9ce7600225b48a92c3900b8188fc, 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: 100 +--- !u!222 &1356349444 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356349441} + m_CullTransparentMesh: 1 --- !u!114 &1361596248 stripped MonoBehaviour: m_CorrespondingSourceObject: {fileID: 446555101699528694, guid: e8a3ecb1a86977047a7d1acac912f8b1, type: 3} @@ -16774,6 +20991,85 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1390322002 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1390322003} + - component: {fileID: 1390322005} + - component: {fileID: 1390322004} + m_Layer: 5 + m_Name: dif + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1390322003 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1390322002} + 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: 1428706863} + 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: 292.0909, y: 0} + m_SizeDelta: {x: 77.732, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1390322004 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1390322002} + 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: 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: "\u6240\u9009\u96BE\u5EA6" +--- !u!222 &1390322005 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1390322002} + m_CullTransparentMesh: 1 --- !u!1 &1391823402 GameObject: m_ObjectHideFlags: 0 @@ -16811,6 +21107,115 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 26.6} m_SizeDelta: {x: 100, y: 100} m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1395378499 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1395378500} + - component: {fileID: 1395378503} + - component: {fileID: 1395378502} + - component: {fileID: 1395378501} + m_Layer: 5 + m_Name: Scroll View + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1395378500 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1395378499} + 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: 183490647} + - {fileID: 423473813} + - {fileID: 331256506} + m_Father: {fileID: 246070008} + 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: 14.336} + m_SizeDelta: {x: 700, y: 628.672} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1395378501 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1395378499} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Content: {fileID: 2129776721} + 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: 183490647} + m_HorizontalScrollbar: {fileID: 423473814} + m_VerticalScrollbar: {fileID: 331256507} + m_HorizontalScrollbarVisibility: 2 + m_VerticalScrollbarVisibility: 2 + m_HorizontalScrollbarSpacing: -3 + m_VerticalScrollbarSpacing: -3 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &1395378502 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1395378499} + 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.19607843} + 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: 9ebd9ce7600225b48a92c3900b8188fc, 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!222 &1395378503 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1395378499} + m_CullTransparentMesh: 1 --- !u!1 &1396949620 GameObject: m_ObjectHideFlags: 0 @@ -17194,6 +21599,278 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 100, y: 100} m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1414860169 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1414860170} + - component: {fileID: 1414860172} + - component: {fileID: 1414860171} + 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 &1414860170 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1414860169} + 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: 806644805} + 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!114 &1414860171 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1414860169} + 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: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u67E5\u770B\u7B49\u7EA7\u8BE6\u60C5" +--- !u!222 &1414860172 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1414860169} + m_CullTransparentMesh: 1 +--- !u!1 &1420020113 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1420020114} + - component: {fileID: 1420020116} + - component: {fileID: 1420020115} + m_Layer: 5 + m_Name: txtbtmShadow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1420020114 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1420020113} + 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: 1796584395} + 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: 3.5, y: -256.6} + m_SizeDelta: {x: 501, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1420020115 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1420020113} + 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.39215687} + 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: 9ebd9ce7600225b48a92c3900b8188fc, 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!222 &1420020116 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1420020113} + m_CullTransparentMesh: 1 +--- !u!1 &1421889017 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1421889018} + m_Layer: 5 + m_Name: right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1421889018 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1421889017} + 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: 110844977} + - {fileID: 1076353774} + - {fileID: 662689827} + - {fileID: 772272309} + m_Father: {fileID: 1789653745} + 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 &1425393342 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1425393343} + - component: {fileID: 1425393345} + - component: {fileID: 1425393344} + m_Layer: 5 + m_Name: uName + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1425393343 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1425393342} + 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: 1273973766} + 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: 400, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1425393344 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1425393342} + 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: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u7528\u6237\u540D" +--- !u!222 &1425393345 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1425393342} + m_CullTransparentMesh: 1 --- !u!1 &1427200542 GameObject: m_ObjectHideFlags: 0 @@ -17315,6 +21992,47 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1427200542} m_CullTransparentMesh: 1 +--- !u!1 &1428706862 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1428706863} + m_Layer: 5 + m_Name: TITLES + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1428706863 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1428706862} + 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: 1001208685} + - {fileID: 1028861006} + - {fileID: 1390322003} + - {fileID: 1276875397} + - {fileID: 1712468420} + - {fileID: 1690571138} + m_Father: {fileID: 772272309} + 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: -25.7} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &1445733389 GameObject: m_ObjectHideFlags: 0 @@ -17665,6 +22383,205 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1462641668} m_CullTransparentMesh: 1 +--- !u!1 &1490697075 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1490697076} + - component: {fileID: 1490697078} + - component: {fileID: 1490697077} + m_Layer: 5 + m_Name: uid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1490697076 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1490697075} + 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: 1273973766} + 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: -27.9} + m_SizeDelta: {x: 400, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1490697077 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1490697075} + 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: 8b8373b0af11dca46b89be60dbe469f8, type: 3} + m_FontSize: 15 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'SourceID: 7656123456789012' +--- !u!222 &1490697078 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1490697075} + m_CullTransparentMesh: 1 +--- !u!1 &1491610693 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1491610694} + m_Layer: 5 + m_Name: TITLES + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1491610694 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1491610693} + 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: 1636683654} + - {fileID: 1263320723} + - {fileID: 743945641} + - {fileID: 147206995} + - {fileID: 162819070} + - {fileID: 284090947} + m_Father: {fileID: 246070008} + 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: -293, y: 346.3} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1496686035 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1496686036} + - component: {fileID: 1496686038} + - component: {fileID: 1496686037} + m_Layer: 5 + m_Name: notice + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1496686036 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1496686035} + 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: 550366999} + 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: -336} + m_SizeDelta: {x: 600, y: 40} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1496686037 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1496686035} + 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: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 189 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u6700\u591A\u5C55\u793A100\u6761\u6700\u8FD1\u8BB0\u5F55\u3002\u8FD9\u4E9B\u6570\u636E\u4E0D\u4F1A\u4E0A\u4F20\uFF0C\u4EC5\u5728\u672C\u5730\u4F9B\u60A8\u67E5\u770B\u3002" +--- !u!222 &1496686038 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1496686035} + m_CullTransparentMesh: 1 --- !u!1 &1497888363 GameObject: m_ObjectHideFlags: 0 @@ -18734,6 +23651,160 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: -20, y: -20} m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1636683653 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1636683654} + - component: {fileID: 1636683656} + - component: {fileID: 1636683655} + m_Layer: 5 + m_Name: date + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1636683654 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1636683653} + 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: 1491610694} + 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: 28.398, y: 0} + m_SizeDelta: {x: 81.292, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1636683655 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1636683653} + 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: 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: "\u65E5\u671F" +--- !u!222 &1636683656 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1636683653} + m_CullTransparentMesh: 1 +--- !u!1 &1646428908 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1646428909} + - component: {fileID: 1646428911} + - component: {fileID: 1646428910} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1646428909 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1646428908} + 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: 1917969550} + 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!114 &1646428910 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1646428908} + 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!222 &1646428911 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1646428908} + m_CullTransparentMesh: 1 --- !u!1 &1672956156 GameObject: m_ObjectHideFlags: 0 @@ -18981,6 +24052,85 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1680763994} m_CullTransparentMesh: 1 +--- !u!1 &1690571137 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1690571138} + - component: {fileID: 1690571140} + - component: {fileID: 1690571139} + m_Layer: 5 + m_Name: lvl + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1690571138 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1690571137} + 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: 1428706863} + 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: 563.102, y: 0} + m_SizeDelta: {x: 61.962, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1690571139 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1690571137} + 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: 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: "\u8BC4\u7EA7" +--- !u!222 &1690571140 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1690571137} + m_CullTransparentMesh: 1 --- !u!1 &1691897214 GameObject: m_ObjectHideFlags: 0 @@ -19133,6 +24283,85 @@ MonoBehaviour: m_ChildScaleWidth: 0 m_ChildScaleHeight: 0 m_ReverseArrangement: 0 +--- !u!1 &1712468419 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1712468420} + - component: {fileID: 1712468422} + - component: {fileID: 1712468421} + m_Layer: 5 + m_Name: score + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1712468420 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1712468419} + 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: 1428706863} + 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: 471.02777, y: 0} + m_SizeDelta: {x: 94.519, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1712468421 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1712468419} + 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: 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: "\u603B\u5206" +--- !u!222 &1712468422 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1712468419} + m_CullTransparentMesh: 1 --- !u!1 &1713841285 GameObject: m_ObjectHideFlags: 0 @@ -19591,6 +24820,145 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1780571908} m_CullTransparentMesh: 1 +--- !u!1 &1789653744 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1789653745} + - component: {fileID: 1789653746} + m_Layer: 5 + m_Name: UI_Player + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1789653745 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1789653744} + 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: 707237088} + - {fileID: 702835300} + - {fileID: 1421889018} + m_Father: {fileID: 496948792} + 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 &1789653746 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1789653744} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01cdae7333ce2284fbd8246a1d450c3e, type: 3} + m_Name: + m_EditorClassIdentifier: + pInfoPrefab: {fileID: 8840060924241115349, guid: 54a993fe0ba0c4b48b7486f77418c8fc, type: 3} + pInfoParent: {fileID: 794562997} + pSO: {fileID: 11400000, guid: a59c019c71199384eaac0703299047c8, type: 2} + userProfileImage: {fileID: 1796584396} + userNameText: {fileID: 1425393344} + userIDText: {fileID: 1490697077} + user_registDate: {fileID: 0} + userSource: {fileID: 0} + fcAmount: {fileID: 0} + firstFCsong: {fileID: 0} + totalPlayTime: {fileID: 0} +--- !u!1 &1796584394 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1796584395} + - component: {fileID: 1796584397} + - component: {fileID: 1796584396} + m_Layer: 5 + m_Name: profile + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1796584395 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1796584394} + 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: 1420020114} + - {fileID: 1273973766} + m_Father: {fileID: 702835300} + 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: 375, y: 375} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1796584396 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1796584394} + 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!222 &1796584397 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1796584394} + m_CullTransparentMesh: 1 --- !u!1 &1797213194 GameObject: m_ObjectHideFlags: 0 @@ -20042,6 +25410,85 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1828749180} m_CullTransparentMesh: 1 +--- !u!1 &1830199933 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1830199934} + - component: {fileID: 1830199936} + - component: {fileID: 1830199935} + 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 &1830199934 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1830199933} + 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: 207157885} + 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: 101.006, y: 0} + m_SizeDelta: {x: 161.616, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1830199935 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1830199933} + 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: 6 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "(\u4EC5\u663E\u793A\u6700\u8FD15\u573A)" +--- !u!222 &1830199936 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1830199933} + m_CullTransparentMesh: 1 --- !u!1 &1842292897 GameObject: m_ObjectHideFlags: 0 @@ -20278,6 +25725,81 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: -20, y: -20} m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1867224385 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1867224386} + - component: {fileID: 1867224388} + - component: {fileID: 1867224387} + m_Layer: 5 + m_Name: btmImg (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1867224386 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1867224385} + 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: 707237088} + 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 &1867224387 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1867224385} + 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.39215687} + 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: 22b72b44a57134c4496c1c373dc433cd, 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!222 &1867224388 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1867224385} + m_CullTransparentMesh: 1 --- !u!1 &1880244279 GameObject: m_ObjectHideFlags: 0 @@ -20489,6 +26011,84 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1886093563} m_CullTransparentMesh: 1 +--- !u!1 &1886228762 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1886228763} + - component: {fileID: 1886228764} + - component: {fileID: 1886228765} + m_Layer: 5 + m_Name: gHistoryParent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1886228763 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1886228762} + 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: 1063489895} + m_Father: {fileID: 772272309} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 291.67, y: -90} + m_SizeDelta: {x: 703.71, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &1886228764 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1886228762} + 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: 10 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &1886228765 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1886228762} + 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 &1886958183 GameObject: m_ObjectHideFlags: 0 @@ -21168,6 +26768,42 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1915304937} m_CullTransparentMesh: 1 +--- !u!1 &1917969549 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1917969550} + 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 &1917969550 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1917969549} + 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: 1646428909} + m_Father: {fileID: 145429841} + 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 &1923404668 GameObject: m_ObjectHideFlags: 0 @@ -22233,6 +27869,81 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1973529535} m_CullTransparentMesh: 1 +--- !u!1 &1973678821 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1973678822} + - component: {fileID: 1973678824} + - component: {fileID: 1973678823} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1973678822 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1973678821} + 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: 145429841} + 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.0660095, y: 0} + m_SizeDelta: {x: -19.472, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1973678823 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1973678821} + 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: 7621278097234006379, guid: 59df2390a598c904bab275d1ea743916, 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!222 &1973678824 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1973678821} + m_CullTransparentMesh: 1 --- !u!1 &1973903967 GameObject: m_ObjectHideFlags: 0 @@ -22809,6 +28520,164 @@ MonoBehaviour: m_hasFontAssetChanged: 0 m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &1998430572 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1998430573} + - component: {fileID: 1998430575} + - component: {fileID: 1998430574} + m_Layer: 5 + m_Name: title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1998430573 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1998430572} + 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: 550366999} + 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: 381.5} + m_SizeDelta: {x: 160, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1998430574 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1998430572} + 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: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u6E38\u620F\u8BB0\u5F55" +--- !u!222 &1998430575 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1998430572} + m_CullTransparentMesh: 1 +--- !u!1 &2018781963 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2018781964} + - component: {fileID: 2018781966} + - component: {fileID: 2018781965} + m_Layer: 5 + m_Name: uXP + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2018781964 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2018781963} + 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: 145429841} + 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.601, y: 0.0000076293945} + m_SizeDelta: {x: 445, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2018781965 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2018781963} + 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: 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: 1000/2000 +--- !u!222 &2018781966 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2018781963} + m_CullTransparentMesh: 1 --- !u!1 &2030106540 GameObject: m_ObjectHideFlags: 0 @@ -23692,6 +29561,127 @@ RenderTexture: m_Dimension: 2 m_VolumeDepth: 1 m_ShadowSamplingMode: 2 +--- !u!1 &2126536767 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2126536768} + - component: {fileID: 2126536771} + - component: {fileID: 2126536770} + - component: {fileID: 2126536769} + m_Layer: 5 + m_Name: quit + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2126536768 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2126536767} + 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: 1121018384} + m_Father: {fileID: 550366999} + 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: -384.757} + m_SizeDelta: {x: 160, y: 40} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2126536769 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2126536767} + 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: 2126536770} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &2126536770 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2126536767} + 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: 2 +--- !u!222 &2126536771 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2126536767} + m_CullTransparentMesh: 1 --- !u!1001 &2126691100 PrefabInstance: m_ObjectHideFlags: 0 @@ -25481,6 +31471,83 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 41f4ea31b64f18d48aeef21b79930a6c, type: 3} +--- !u!1 &2129776720 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2129776721} + - component: {fileID: 2129776723} + - component: {fileID: 2129776722} + m_Layer: 5 + m_Name: Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2129776721 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2129776720} + 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: 183490647} + 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: 20} + m_Pivot: {x: 0, y: 1} +--- !u!114 &2129776722 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2129776720} + 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!114 &2129776723 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2129776720} + 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: 10 + m_Bottom: 10 + 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!1 &2137050293 GameObject: m_ObjectHideFlags: 0 @@ -27777,131 +33844,147 @@ PrefabInstance: m_Modifications: - target: {fileID: 11776803711538540, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 11776803711538540, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 11776803711538540, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 15 objectReference: {fileID: 0} - target: {fileID: 11776803711538540, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -15 + objectReference: {fileID: 0} + - target: {fileID: 34862655915869886, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} + propertyPath: m_SizeDelta.x + value: 587.799 + objectReference: {fileID: 0} + - target: {fileID: 34862655915869886, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} + propertyPath: m_SizeDelta.y + value: 77.554 + objectReference: {fileID: 0} + - target: {fileID: 34862655915869886, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} + propertyPath: m_AnchoredPosition.x + value: -486.099 objectReference: {fileID: 0} - target: {fileID: 202391987344969823, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 202391987344969823, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 202391987344969823, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 650 objectReference: {fileID: 0} - target: {fileID: 202391987344969823, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -50 objectReference: {fileID: 0} - target: {fileID: 549378709426303572, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_SizeDelta.x - value: 0 + value: 820 objectReference: {fileID: 0} - target: {fileID: 1025771999671056002, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 1025771999671056002, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 1025771999671056002, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 165 objectReference: {fileID: 0} - target: {fileID: 1025771999671056002, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -15 objectReference: {fileID: 0} - target: {fileID: 1130965594743679031, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_SizeDelta.y - value: 0 + value: 46 objectReference: {fileID: 0} - target: {fileID: 1469778308712558243, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 1469778308712558243, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 1469778308712558243, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 290 objectReference: {fileID: 0} - target: {fileID: 1469778308712558243, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -50 objectReference: {fileID: 0} - target: {fileID: 1707269501257266202, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 1707269501257266202, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 1707269501257266202, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 90 objectReference: {fileID: 0} - target: {fileID: 1707269501257266202, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -15 + objectReference: {fileID: 0} + - target: {fileID: 2070776448517172848, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} + propertyPath: m_AnchoredPosition.x + value: 19.059998 objectReference: {fileID: 0} - target: {fileID: 2181469223155108501, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMax.x - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2181469223155108501, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 3009654082049675057, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 3009654082049675057, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 3009654082049675057, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 170 objectReference: {fileID: 0} - target: {fileID: 3009654082049675057, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -50 objectReference: {fileID: 0} - target: {fileID: 3723007445375871001, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 3723007445375871001, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 3723007445375871001, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 530 objectReference: {fileID: 0} - target: {fileID: 3723007445375871001, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -50 objectReference: {fileID: 0} - target: {fileID: 3878406062860244594, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_Name @@ -27909,87 +33992,95 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3878406062860244594, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4099088058103800748, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} + propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} - - target: {fileID: 4099088058103800748, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - target: {fileID: 4099088058103800748, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 4099088058103800748, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_SizeDelta.x - value: 0 + value: 228.418 objectReference: {fileID: 0} - target: {fileID: 4099088058103800748, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_SizeDelta.y - value: 0 + value: 36 objectReference: {fileID: 0} - target: {fileID: 4099088058103800748, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 124.209 objectReference: {fileID: 0} - target: {fileID: 4099088058103800748, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -23 objectReference: {fileID: 0} - target: {fileID: 4451368078909871955, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 4451368078909871955, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 4451368078909871955, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 410 objectReference: {fileID: 0} - target: {fileID: 4451368078909871955, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -50 objectReference: {fileID: 0} - target: {fileID: 4496931128263031836, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMax.x - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 4496931128263031836, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 4652424639662612683, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_SizeDelta.x - value: 0 + value: 133 objectReference: {fileID: 0} - target: {fileID: 5166977844970772142, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5166977844970772142, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5166977844970772142, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 770 objectReference: {fileID: 0} - target: {fileID: 5166977844970772142, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -50 + objectReference: {fileID: 0} + - target: {fileID: 5329120944042547189, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} + propertyPath: m_Text + value: "Banlink\u590D\u6F14\u4E13\u9879\u7EC4\u4EF6\u4E2D\u5FC3" + objectReference: {fileID: 0} + - target: {fileID: 5329120944042547189, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} + propertyPath: m_FontData.m_FontSize + value: 36 objectReference: {fileID: 0} - target: {fileID: 5491529013155626524, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5491529013155626524, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5491529013155626524, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -25 objectReference: {fileID: 0} - target: {fileID: 5921857076690932212, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_Pivot.x @@ -28071,51 +34162,160 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 6917019002802122342, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} + propertyPath: m_AnchoredPosition.x + value: 12.400002 + objectReference: {fileID: 0} + - target: {fileID: 6917019002802122342, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} + propertyPath: m_AnchoredPosition.y + value: -1.3000002 + objectReference: {fileID: 0} - target: {fileID: 7605425856142677704, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 7605425856142677704, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 7605425856142677704, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_SizeDelta.x - value: 0 + value: 113 objectReference: {fileID: 0} - target: {fileID: 7605425856142677704, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_SizeDelta.y - value: 0 + value: 43.5 objectReference: {fileID: 0} - target: {fileID: 7605425856142677704, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 76.5 objectReference: {fileID: 0} - target: {fileID: 7605425856142677704, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -25 objectReference: {fileID: 0} - target: {fileID: 8425308013050784147, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 8425308013050784147, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 8425308013050784147, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 50 objectReference: {fileID: 0} - target: {fileID: 8425308013050784147, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -50 objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: d94caf56bd6dff64fa606eeeb6e06fa9, type: 3} +--- !u!1001 &4316252188104159810 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 794562997} + m_Modifications: + - target: {fileID: 7358548625640972063, guid: 54a993fe0ba0c4b48b7486f77418c8fc, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 7358548625640972063, guid: 54a993fe0ba0c4b48b7486f77418c8fc, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 7358548625640972063, guid: 54a993fe0ba0c4b48b7486f77418c8fc, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7358548625640972063, guid: 54a993fe0ba0c4b48b7486f77418c8fc, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7358548625640972063, guid: 54a993fe0ba0c4b48b7486f77418c8fc, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7358548625640972063, guid: 54a993fe0ba0c4b48b7486f77418c8fc, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7358548625640972063, guid: 54a993fe0ba0c4b48b7486f77418c8fc, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7358548625640972063, guid: 54a993fe0ba0c4b48b7486f77418c8fc, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7358548625640972063, guid: 54a993fe0ba0c4b48b7486f77418c8fc, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7358548625640972063, guid: 54a993fe0ba0c4b48b7486f77418c8fc, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7358548625640972063, guid: 54a993fe0ba0c4b48b7486f77418c8fc, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7358548625640972063, guid: 54a993fe0ba0c4b48b7486f77418c8fc, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7358548625640972063, guid: 54a993fe0ba0c4b48b7486f77418c8fc, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7358548625640972063, guid: 54a993fe0ba0c4b48b7486f77418c8fc, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7358548625640972063, guid: 54a993fe0ba0c4b48b7486f77418c8fc, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7358548625640972063, guid: 54a993fe0ba0c4b48b7486f77418c8fc, type: 3} + propertyPath: m_AnchoredPosition.x + value: 200 + objectReference: {fileID: 0} + - target: {fileID: 7358548625640972063, guid: 54a993fe0ba0c4b48b7486f77418c8fc, type: 3} + propertyPath: m_AnchoredPosition.y + value: -25 + objectReference: {fileID: 0} + - target: {fileID: 7358548625640972063, guid: 54a993fe0ba0c4b48b7486f77418c8fc, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7358548625640972063, guid: 54a993fe0ba0c4b48b7486f77418c8fc, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7358548625640972063, guid: 54a993fe0ba0c4b48b7486f77418c8fc, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8840060924241115349, guid: 54a993fe0ba0c4b48b7486f77418c8fc, type: 3} + propertyPath: m_Name + value: pInfoPrefab + objectReference: {fileID: 0} + - target: {fileID: 8840060924241115349, guid: 54a993fe0ba0c4b48b7486f77418c8fc, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 54a993fe0ba0c4b48b7486f77418c8fc, type: 3} --- !u!4 &4555079430303663727 Transform: m_ObjectHideFlags: 0 @@ -28344,6 +34544,107 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 0 +--- !u!1001 &8492766092057312233 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1886228763} + m_Modifications: + - target: {fileID: 4621517492616896599, guid: 8c7f1125b672ba54fb24d10e0cc4095a, type: 3} + propertyPath: m_Name + value: gameHistoryPrefab + objectReference: {fileID: 0} + - target: {fileID: 4621517492616896599, guid: 8c7f1125b672ba54fb24d10e0cc4095a, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7028528044515112815, guid: 8c7f1125b672ba54fb24d10e0cc4095a, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 7028528044515112815, guid: 8c7f1125b672ba54fb24d10e0cc4095a, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 7028528044515112815, guid: 8c7f1125b672ba54fb24d10e0cc4095a, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7028528044515112815, guid: 8c7f1125b672ba54fb24d10e0cc4095a, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7028528044515112815, guid: 8c7f1125b672ba54fb24d10e0cc4095a, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7028528044515112815, guid: 8c7f1125b672ba54fb24d10e0cc4095a, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7028528044515112815, guid: 8c7f1125b672ba54fb24d10e0cc4095a, type: 3} + propertyPath: m_SizeDelta.x + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 7028528044515112815, guid: 8c7f1125b672ba54fb24d10e0cc4095a, type: 3} + propertyPath: m_SizeDelta.y + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 7028528044515112815, guid: 8c7f1125b672ba54fb24d10e0cc4095a, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7028528044515112815, guid: 8c7f1125b672ba54fb24d10e0cc4095a, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7028528044515112815, guid: 8c7f1125b672ba54fb24d10e0cc4095a, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7028528044515112815, guid: 8c7f1125b672ba54fb24d10e0cc4095a, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7028528044515112815, guid: 8c7f1125b672ba54fb24d10e0cc4095a, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7028528044515112815, guid: 8c7f1125b672ba54fb24d10e0cc4095a, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7028528044515112815, guid: 8c7f1125b672ba54fb24d10e0cc4095a, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7028528044515112815, guid: 8c7f1125b672ba54fb24d10e0cc4095a, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7028528044515112815, guid: 8c7f1125b672ba54fb24d10e0cc4095a, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7028528044515112815, guid: 8c7f1125b672ba54fb24d10e0cc4095a, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7028528044515112815, guid: 8c7f1125b672ba54fb24d10e0cc4095a, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7028528044515112815, guid: 8c7f1125b672ba54fb24d10e0cc4095a, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 8c7f1125b672ba54fb24d10e0cc4095a, type: 3} --- !u!1001 &8850050739472999427 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/gamePlay_gamePlay.unity b/Assets/Scenes/gamePlay_gamePlay.unity index fe15f365..751428cc 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: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 50, y: -18.034874} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 100, y: 10} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &2178223 @@ -2682,9 +2682,9 @@ RectTransform: - {fileID: 1579840624} m_Father: {fileID: 1181698751} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 307.76, y: -60.5} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 100, y: 100} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &140317858 @@ -10072,9 +10072,9 @@ RectTransform: - {fileID: 1328532447} m_Father: {fileID: 590261241} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 81, y: -50} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 162, y: 100} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &228531561 @@ -10524,9 +10524,9 @@ RectTransform: - {fileID: 807575964} m_Father: {fileID: 590261241} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 606, y: -50} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 162, y: 100} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &247015384 @@ -12176,7 +12176,7 @@ RectTransform: m_Father: {fileID: 1374351887} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} + 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} @@ -12587,9 +12587,9 @@ RectTransform: m_Children: [] m_Father: {fileID: 1121766410} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 43, y: -50} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 10, y: 12} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &315535051 @@ -14106,9 +14106,9 @@ RectTransform: - {fileID: 55210105} m_Father: {fileID: 1181698751} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 50, y: -60.5} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 100, y: 100} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &354769595 @@ -16405,9 +16405,9 @@ RectTransform: - {fileID: 81893893} m_Father: {fileID: 1181698751} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 178.88, y: -60.5} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 100, y: 100} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &405968940 @@ -32261,7 +32261,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!4 &874962972 Transform: m_ObjectHideFlags: 0 @@ -34467,9 +34467,9 @@ RectTransform: m_Father: {fileID: 725274684} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 0} + m_AnchorMax: {x: 0, y: 0} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: -4.44, y: 20} + m_SizeDelta: {x: 0, y: 20} m_Pivot: {x: 0, y: 0} --- !u!114 &985131518 MonoBehaviour: @@ -34694,9 +34694,9 @@ RectTransform: - {fileID: 841673123} m_Father: {fileID: 590261241} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 256, y: -50} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 162, y: 100} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &999995736 @@ -39225,9 +39225,9 @@ RectTransform: - {fileID: 208898303} m_Father: {fileID: 425295052} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 50, y: -5} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 100, y: 10} m_Pivot: {x: 0.5, y: 0.5} --- !u!4 &1154758974 stripped @@ -46699,9 +46699,9 @@ RectTransform: - {fileID: 1740052537} m_Father: {fileID: 1181698751} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 436.64, y: -60.5} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 100, y: 100} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &1454903926 @@ -50903,9 +50903,9 @@ RectTransform: m_Children: [] m_Father: {fileID: 1121766410} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 24, y: -50} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 10, y: 12} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1628161349 @@ -51442,9 +51442,9 @@ RectTransform: m_Father: {fileID: 725274684} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} + m_AnchorMax: {x: 0, y: 0} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: -4.44, y: 0} + m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0, y: 1} --- !u!114 &1658081545 MonoBehaviour: @@ -52518,9 +52518,9 @@ RectTransform: - {fileID: 1461351369} m_Father: {fileID: 590261241} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 431, y: -50} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 162, y: 100} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &1705000562 @@ -54221,9 +54221,9 @@ RectTransform: - {fileID: 578526358} m_Father: {fileID: 425295052} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 50, y: -31.069748} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 100, y: 10} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &1771996335 @@ -56799,9 +56799,9 @@ RectTransform: - {fileID: 616492490} m_Father: {fileID: 425295052} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 50, y: -44.10462} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 100, y: 10} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &1904135294 @@ -59782,9 +59782,9 @@ RectTransform: m_Children: [] m_Father: {fileID: 1121766410} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 5, y: -50} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 10, y: 12} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &2043797911 @@ -67699,115 +67699,115 @@ PrefabInstance: m_Modifications: - target: {fileID: 122756198372604741, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 122756198372604741, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 122756198372604741, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 50 + value: 0 objectReference: {fileID: 0} - target: {fileID: 122756198372604741, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: -108.729996 + value: 0 objectReference: {fileID: 0} - target: {fileID: 187557561287668015, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 187557561287668015, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 187557561287668015, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 85 + value: 0 objectReference: {fileID: 0} - target: {fileID: 187557561287668015, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: -50 + value: 0 objectReference: {fileID: 0} - target: {fileID: 412937744056933375, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 412937744056933375, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 412937744056933375, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 17.5 + value: 0 objectReference: {fileID: 0} - target: {fileID: 412937744056933375, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: -50 + value: 0 objectReference: {fileID: 0} - target: {fileID: 678618177608988214, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 678618177608988214, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 678618177608988214, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 17.5 + value: 0 objectReference: {fileID: 0} - target: {fileID: 678618177608988214, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: -50 + value: 0 objectReference: {fileID: 0} - target: {fileID: 796738331562133123, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 796738331562133123, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 796738331562133123, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 100 + value: 0 objectReference: {fileID: 0} - target: {fileID: 796738331562133123, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: -53.66 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1813990329505698292, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1813990329505698292, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1813990329505698292, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 50 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1813990329505698292, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: -25 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2418429837761252522, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2418429837761252522, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2418429837761252522, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 100 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2418429837761252522, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: -25 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2613971938742376913, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_Pivot.x @@ -67823,7 +67823,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2613971938742376913, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2613971938742376913, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.x @@ -67831,7 +67831,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2613971938742376913, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2613971938742376913, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_SizeDelta.x @@ -67871,11 +67871,11 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2613971938742376913, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 50 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2613971938742376913, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: -50 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2613971938742376913, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_LocalEulerAnglesHint.x @@ -67907,19 +67907,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2770405465405990285, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2770405465405990285, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2770405465405990285, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 12.5 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2770405465405990285, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: -50 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4148755058004053777, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y @@ -67927,35 +67927,35 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4704552103312105881, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4704552103312105881, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4704552103312105881, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 17.5 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4704552103312105881, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: -50 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4821968732813134168, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4821968732813134168, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4821968732813134168, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 17.5 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4821968732813134168, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: -50 + value: 0 objectReference: {fileID: 0} - target: {fileID: 4929852368789569139, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y @@ -67975,67 +67975,67 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5213525157689929386, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 5213525157689929386, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 5213525157689929386, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 50 + value: 0 objectReference: {fileID: 0} - target: {fileID: 5213525157689929386, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: -80.82 + value: 0 objectReference: {fileID: 0} - target: {fileID: 5278958300364593933, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 5278958300364593933, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 5278958300364593933, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 50 + value: 0 objectReference: {fileID: 0} - target: {fileID: 5278958300364593933, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: -52.91 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6349925019039213472, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6349925019039213472, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6349925019039213472, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 85 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6349925019039213472, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: -50 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6354168271256631497, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6354168271256631497, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6354168271256631497, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 85 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6354168271256631497, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: -50 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6494845825576441926, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_LocalPosition.z @@ -68059,19 +68059,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6964822682335917845, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6964822682335917845, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6964822682335917845, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 84.55 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6964822682335917845, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: -50 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7228302987943925696, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.x @@ -68099,19 +68099,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7489680557431120668, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7489680557431120668, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7489680557431120668, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 84.55 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7489680557431120668, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: -50 + value: 0 objectReference: {fileID: 0} - target: {fileID: 7889622464149315732, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_IsActive @@ -68119,19 +68119,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8162043787242817865, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 8162043787242817865, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 8162043787242817865, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 85 + value: 0 objectReference: {fileID: 0} - target: {fileID: 8162043787242817865, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: -50 + value: 0 objectReference: {fileID: 0} - target: {fileID: 8281064337243533176, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y @@ -68151,19 +68151,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8790025443345388889, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 8790025443345388889, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 8790025443345388889, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.x - value: 12.5 + value: 0 objectReference: {fileID: 0} - target: {fileID: 8790025443345388889, guid: 83349f645e9e9764ab6c8c66e5b107a3, type: 3} propertyPath: m_AnchoredPosition.y - value: -50 + value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] diff --git a/Assets/UniversalRenderPipelineGlobalSettings.asset b/Assets/UniversalRenderPipelineGlobalSettings.asset index f417e63f..4494b58a 100644 --- a/Assets/UniversalRenderPipelineGlobalSettings.asset +++ b/Assets/UniversalRenderPipelineGlobalSettings.asset @@ -60,17 +60,7 @@ MonoBehaviour: - rid: 5279208450996568088 - rid: 5279208450996568089 m_RuntimeSettings: - m_List: - - rid: 5279208450996568066 - - rid: 5279208450996568070 - - rid: 5279208450996568074 - - rid: 5279208450996568075 - - rid: 5279208450996568077 - - rid: 5279208450996568078 - - rid: 5279208450996568079 - - rid: 5279208450996568081 - - rid: 5279208450996568086 - - rid: 5279208450996568088 + m_List: [] m_AssetVersion: 8 m_ObsoleteDefaultVolumeProfile: {fileID: 0} m_RenderingLayerNames: diff --git a/Assets/artworks/notebook/notebookController.cs b/Assets/artworks/notebook/notebookController.cs index 8b4a4634..aa80c510 100644 --- a/Assets/artworks/notebook/notebookController.cs +++ b/Assets/artworks/notebook/notebookController.cs @@ -65,6 +65,7 @@ public class notebookController : MonoBehaviour { if (initialized) return; initialized = true; + StoreOwnershipLedger.EnsureInstance().InitializeIfNeeded(); LoadAllData(); categoryToggles = new[] { diff --git a/Assets/artworks/notebook/notebook_fatherType.cs b/Assets/artworks/notebook/notebook_fatherType.cs index 6452cbbe..64ac3a7c 100644 --- a/Assets/artworks/notebook/notebook_fatherType.cs +++ b/Assets/artworks/notebook/notebook_fatherType.cs @@ -42,4 +42,17 @@ public class notebook_faterType : ScriptableObject [Header("Son Lists")] public List sonList = new List(); -} \ No newline at end of file + + public void SetUnlocked(bool value) + { + if (isUnlocked == value) + { + return; + } + + isUnlocked = value; +#if UNITY_EDITOR + EditorUtility.SetDirty(this); +#endif + } +} diff --git a/Assets/playerBagSystem.meta b/Assets/playerBagSystem.meta new file mode 100644 index 00000000..1a13d913 --- /dev/null +++ b/Assets/playerBagSystem.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 923f20164290cd64c9a021c8cabe23a0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/playerBagSystem/deployed_code_256dp_FFFFFF_FILL0_wght400_GRAD0_opsz48.png b/Assets/playerBagSystem/deployed_code_256dp_FFFFFF_FILL0_wght400_GRAD0_opsz48.png new file mode 100644 index 0000000000000000000000000000000000000000..0e3878e1ca57a503fc2f67d71f36d58129a7cae1 GIT binary patch literal 7111 zcmeHsX*iT^`1dt4w(Lt~-)AhzmVK9XMo6iYJwy^&vW#^oDI{(}_9r8iELp}DMv-Si zgo+_1$r6SnyS#VLdmQhF_v3pU@3;S_`@XO3{+-KpUFZ2b@7dW}awKM@$??n~>5RS*0oje!ey6keO#@{^DrS}lCSN2KcZNg(2 zA%r>E>>OF=34?i1vi%_hbD(v?33(xA24?PKwkOXVmOOJy`Z2Hhxh>xNd?(mgq_qEe z{8*vkYrES@$HAoDToFAaY}25%LauVBZIc?c9P?Svv^YS@LWP?>H5-wp`3tKrz{13h z!g&vCAi#pSE5^cP z(Pzv;zMCTcj2R^fKA<|ucLiAx0zp5ef4fUCNJL5q2&lpx(n_&JG4|WQjEey!?JdFJ z-qrnJNiXb!qG8#$Qtd{@Yt1N6CTDM0J16*biF&vwgtkAn z&%9vSp;#unM9*5|g)!Xf{YtgjLqLZnDdJN=eJCGqW?Tqaz(=IzCPCAfYcmxdR z1$yUjhE$%o`awy6%5fb^LA>&GAKeZVm);)fUd6p0duO{$iWajY)k));Q`&iRB zElMs-g4hwN#6edDEd3v7Dm0?NQ-YzS$2EOjvh_2a=P@O84by;j8rq$eDG@u^_kuQ3 zr7XB$dDo4f6Uz}>Sgxw^7X8ebB7fP&N3sikAk1H_v0P^t(l3*pDh(AzroUW=H1nP5 zQ<|mYzRvqp`WGB^u6ZnpsE2AokR8Vg8$-6{DE^(N$88>5vVj*?R~=cK!i??Le$k4$ zFN%$gVhO~xB3AeQoil;PIWiVsc-{u+3m1n}0jJf?OpjP?iu75Ln+=K*o1Qqa35`EB zC=;L?7Ed$)(f^dufFit2ui~<7GS?LWSKe#%=E(HH5H3=ekQpLt znAq_PYZ#HdU0NiB9DKY7aWV&9OnDY#gJ;I+jaTPME}R3W!`Qc2pbL!xz3{HBVb_6{ zlqp)Gdh@&x>2?!Uk`lnSv_bY;G8?Lz@HqY&_B<&fwxxH*FfOL2YV7vRfXL6flc!qv z32b#b1(P3?Wd@k1w|+5BB!c4-W<&f4{ooz3Uhkjkka+)WrGzDP-NAGG%cx(0d2qP$ zDsPY}kU5{RegatP9bGsK?dnc*F)1!o05M$wTAs18?6#)mo=1tLGJvj|k8z1Atl2|F zZmcat!{+|lfi!;ybajw8+@c@(y^S@z9w|ZjwCHxIvZ*$J(gL&!fv5uArBx!CYpTO$5AdepDYh|}?lRVVAk3oj^s zZz_(J)r5|^8r}Vbcw&2;X8Ld$=bE0^Be2Xida-OL@uE$PS{+hi!3A($mn!Lrd%zcX zBEyNSmj4agE@!W6-uy@hk-jbfii5m#3@sM!MdL_(>2pr`J<#6u(+kZ_g@TB5uknlH z@_OMnFY|8Qs>I9sjt6(o--}0PADL3e8?OE;Ix8}=Y|TPIkFzeu-#XE#J4#0n1b2yx z*26w_wVJc-EhD;d6FHFR)Bv!N1_aaKj1Qfsuj4+(*B8h@f0)Trv+Fu#)uq^WZ>xNd zCl0W_mI}5*L@pI1<_OI2x*s|ymc#=?M0nlTSK~7q9jUua|Z0;Vp0t9Y@@-ilJ zN#nhYuTwd{Q8GWkRU=nrEM<(WhkivU_lzvwQF6cZvjP_>R`KZ~*@Mv-Dm3)09-$BB znj7&|$@reS>v^t^K(qm){Bf>tvg4{vhg|viwUQ45+%7`9Go$hdS~;YPYrc>DaLtQ| zI7rspR$>N&+bgyk>?V?3kH>u@QIY?PkLx~ zc@wz_YYgsH*9I`#@w2>dQ-=i8*8{+Aj(`t~aWhiovvPjstCp_Wd%4*@#zUnby2`7_ z1ia%1i^U#>lXA_EPTjMC{Du5_@ok*n&cAAV(f7wm`{!p_S-;3^~K>|{#fdUx9SNsiG@SJ@Zs39I-Mki-;TaDv9D*N zqBDEpK#_bl$Br|K{e5+h23o84Ovx$&>nKhr?1_kyHRP1=O}Y0;KoZeL|9DolLiOEd zm2cDc$B&iB%if=6b(fTdVwq?G_Q4PRb~dqpLX~{#W_p^HEHevsus^v8U7YJuc0(i( zTObgdynP1kmO1Ty;W{QpfZT4o?QFK@>hiK}r_t{f+p-0oQKgsx$Bc?_QZmuo!gJ%I z1~pnF7jVEf+&bD5`dmg!0>qjmC)c0oWtJ>I%tN%(_(4tA&6d3JXINoKq&vV2(qwRN zyzE+`RcyN^?UK?!%&}+Ld(Kj42{ZQGDyni$W5RZf1A#q`UuLjsVI_az^PRsIt3+{W5t^&X z^x_(&XTEV@7GJ?^Cvb+1SzlY3YC`@y$O_RB?hW^)PBaz1?XJMJPq@aBmvvQa_Ax;YA^Nd*M{=u+Pyi+EN)$NVA(#_%q`amsuQDjQmcC^yoSrx0Y<( z4t*J!>3NT zavNHfspj~MBR;LzmPgk`UzT0q1Ftx(_jxInVVHkzv{HAqsz4+?9jWxF*ktXS%TSir z4V@+bq@JxpMJXxY8~Vwj@TMtyR!Al-=v5~+s;pSlehe^UTq@hLgXZeLe+qG3-WPTN zsPG5G1IATC{N*`XtXc4wLm0FqIjw2?GnD$UNB)zOyD8uut1cufEu3=XB6EOO3|sfn z4pE77dtZmU(f&zKepoE;FMcFcu)65Q%Zn;3yaa}Y)6yR{I{A2ZydM`I{$+!s79E^V zg8?&?5J;Ifr3m~-x!gUfeCowFc6c{8jK2i@^TgPdH;7ECc7mmDN+d2)oy0LoC zHEjI3uRvH*%$T(sng!1%8N3cLE!kg-;>)N{ausUbu7uI)R2GuE)^pTz)}z77Lhk`N zcIEWi0n=L%hN}N&pQIA??h;QUw|41b&Wc=^ZQai-kxX0&EV?NS$v1rCiV}r1Kw4Rj z8XK)W&pm9@LLkPdtN$wfZ*sEZIY?A~<4b}m=@-{>G-}*2=CCw_#LK=0zTDhcSs3u$ zp7tJPU;X$QK@6k1+3|+W8_o#!4;X{X*c~Q9VPx>sr{!HN71ett4L&7mKij%{>`-PQ zIxG2oW1ao|J0cF5^$yvkV*kzS!|wj?v$d=)Vde_z@(~U`WctOTzsfOcZ6-FNB5+|n zjk@}|GcOIctA_mlv*3A>OUNLkgs6Fp_pT81$(*SC*q33$3OjzpGK0*MsfuP|KX5K& z3Fe1LdZ$y(1)jFWePeZhJKnOvq}Zn4@JkqJ7ny{4>kxGd9^Hyx-n#?VC#Bj!gVs~! zsQ&rC0|uSHJ@*-zEGf%$)9a7~W#Jb+q8qfXdhE32e|~?1#dt+=n$0fi)=ur`RM)=) z`ZcN|EtWYPb+`X#`TtSQ|M8rUY=9t}u3x%t@iV!4gX#BlB}Wyp2eq}L8IqG{I`ms> zo;83-)SSOPYJ?iio#Bx0&NUxD7uzOW-<5}@0`dTu(9|%z5$j_PW`C@@KwMbGcgM$) zz)a;6;tFVrQ>vB(LwFF@XFlIG@b?lP^La=&0c%+{LyHIzsAv3`@?2)Lop-T)v%*(a zcP`+Td+f(Xrnt#k{&M-iWFI%7KF^AJh^#gA3T7u{DQZz`U*1)=0RJ1Z?<1v2`fns~`A!{|pr^c4ggB!mmbZ2Y)p4X^ti#B$PX+n|>E5T`y8BSpAy zwfs({6_|D5SVGbYp4IjH1aeZ6WtZNHknpSkE26F zf)SME)<@Z%8hl6)hmcIYH?1_v0#ABql-gk(sFB!p4K-H;zn*3Uai>=vT zkM(|^0B3$j37I>WpFaEyC*w~)_PvwofAJT53L+vlvRQ{x(YEv08Ee2Q5z z*Bwu4W2tJ&Aaf3tf4Yb(;(HV$r9E8VvHtQkSd1K0Q;$SPg2u_Ex|^*7n}>@}p55Fz z$qr4Jz%dDC%4UrqnOSWE(4t(l;yW`}5f^wG15Cdg9Yf@XJGmF%qWb*f`t1YS$cQ0A z5jMmbV5r3)d&<4QDp=eynt%QbD|v=QwheuGrTZ40Nv-;w7HX70Ty~romve!0?5ftV z$HU8!(wFf)pRKc3s0(LHg-eeR@D8Z|;`i?kP+yG7yXQBpjsiGO812m1-A!M2ww}q| zsT?fjhfU*NyeGDNG2;zZ?2&MX87#IOK{|L&H?bopv;K6VrI86ZT2D5Pdae99f=goi zi*w;62w-c~elJ}&s8)SfCz&m+2glH1=r32+sDUx%w)+~C@gUMmcthJ_PdVNdx#XB%VD^E3r_Ax*8-*1bdms5H^d0s`N z*JB6@j?B4n(|GjqJ4FjNnBsLzSC303a=@h3^Y+45pxxvA!@uGrwkc&I>+qsQEHpm(PFbqhsiBbZm9EwOep7JbqcKz|SLgry)!Q9( zT=TyVt%l+&QbfJveGS0IwSGTm?9he4w^%Qjg3lmt&q7PY%TZXLDZz-;mCU^gM%62@ zmrbDpjULQ^(a4zAfkwUXEDyO}wpAXW3Yu4)tm>NbqN#+RC_@Pw|iUzj37007bf==R!Xy zYs2*wWW&n!6%lHNI9OVMKBLJ|A>}I$FvEM^_cEdGSV^VsY|D7 z>bQMa2=+%XV;c@6jtlIxUubbrGxh`-Fb3tL3q z#K&_3<{|!O#Tx&Y*P~vj-WSDHiP*o!%nHE__jz>NQR5B&PFAZACOTO&i>xWW^)JlEb>fgYIzlT`FbKV<>@6oQh;4IGp39JK@@Ep^KKH-YmvfzUQpR zfK5g9CGqt2owGG|R_{1r4r6KOxKJU{MrM&Yzzw?Qa9RD{9L{{^G}*Q(W4oZ8c# VyE;?K18`*y;LL5!s!ZGy{udxu2L1p5 literal 0 HcmV?d00001 diff --git a/Assets/playerBagSystem/deployed_code_256dp_FFFFFF_FILL0_wght400_GRAD0_opsz48.png.meta b/Assets/playerBagSystem/deployed_code_256dp_FFFFFF_FILL0_wght400_GRAD0_opsz48.png.meta new file mode 100644 index 00000000..d59b0d5b --- /dev/null +++ b/Assets/playerBagSystem/deployed_code_256dp_FFFFFF_FILL0_wght400_GRAD0_opsz48.png.meta @@ -0,0 +1,156 @@ +fileFormatVersion: 2 +guid: c122873ea5ca2554181d0e8fdbda4ffe +TextureImporter: + internalIDToNameTable: + - first: + 213: 4437205736951285066 + second: deployed_code_256dp_FFFFFF_FILL0_wght400_GRAD0_opsz48_0 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: deployed_code_256dp_FFFFFF_FILL0_wght400_GRAD0_opsz48_0 + rect: + serializedVersion: 2 + x: 31 + y: 19 + width: 194 + height: 218 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: a458e42cb1f149d30800000000000000 + internalID: 4437205736951285066 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: + deployed_code_256dp_FFFFFF_FILL0_wght400_GRAD0_opsz48_0: 4437205736951285066 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/playerDisplay.meta b/Assets/playerDisplay.meta new file mode 100644 index 00000000..51283b95 --- /dev/null +++ b/Assets/playerDisplay.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 713e02abf704c454d8c992e51643195f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/playerDisplay/UI_Player.cs b/Assets/playerDisplay/UI_Player.cs new file mode 100644 index 00000000..6a725c57 --- /dev/null +++ b/Assets/playerDisplay/UI_Player.cs @@ -0,0 +1,443 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using Steamworks; +using UnityEngine; +using UnityEngine.UI; + +public class UI_Player : MonoBehaviour +{ + private const string FirstLaunchDatePrefKey = "player.first_launch_date"; + private const string SongResourcesPath = "song_songIndex"; + private const string VersionLabel = "\u5185\u90e8\u6d4b\u8bd5v207b35"; + private const string ChannelLabel = "Steam"; + private static readonly Color SteamOnlineColor = new Color32(20, 120, 45, 255); + + [Header("prefab")] + public GameObject pInfoPrefab; + public Transform pInfoParent; + + [Header("so")] + [SerializeField] private Player_SO pSO; + + [Header("uData")] + public Image userProfileImage; + public Text userNameText; + public Text userIDText; + public Text user_registDate; + + [Header("uSource")] + public Text userSource; + + [Header("uRecord")] + public Text fcAmount; + public Text firstFCsong; + public Text totalPlayTime; + + private readonly List spawnedInfoEntries = new List(); + private Color defaultInfoColor = Color.black; + + private void Start() + { + StartCoroutine(InitializeAsync()); + } + + private IEnumerator InitializeAsync() + { + StoreOwnershipLedger.EnsureInstance().InitializeIfNeeded(); + StoreOwnershipLedger.EnsureInstance().ForceSyncMirrorFlags(); + + string registerDate = EnsureFirstLaunchDate(); + UserInfoSnapshot snapshot = BuildUserInfoSnapshot(registerDate); + + ApplyLegacyTextMirrors(snapshot); + RebuildInfoEntries(snapshot); + + yield return null; + yield return StartCoroutine(LoadSteamProfileAsync(snapshot.isSteamOnline)); + } + + private string EnsureFirstLaunchDate() + { + string playerPrefsDate = PlayerPrefs.GetString(FirstLaunchDatePrefKey, string.Empty); + string soDate = pSO != null ? pSO.firstLaunchDate : string.Empty; + + string finalDate = !string.IsNullOrWhiteSpace(playerPrefsDate) + ? playerPrefsDate + : (!string.IsNullOrWhiteSpace(soDate) ? soDate : DateTime.Now.ToString("yyyy-MM-dd")); + + if (playerPrefsDate != finalDate) + { + PlayerPrefs.SetString(FirstLaunchDatePrefKey, finalDate); + PlayerPrefs.Save(); + } + + if (pSO != null && pSO.firstLaunchDate != finalDate) + { + pSO.firstLaunchDate = finalDate; +#if UNITY_EDITOR + UnityEditor.EditorUtility.SetDirty(pSO); +#endif + } + + return finalDate; + } + + private UserInfoSnapshot BuildUserInfoSnapshot(string registerDate) + { + SongStats songStats = CollectSongStats(); + return new UserInfoSnapshot + { + registerDate = registerDate, + ownedHeroCount = CountOwnedHeroes(), + ownedSongCount = songStats.ownedSongCount, + totalGameEnterCount = songStats.totalGameEnterCount, + totalPlaySeconds = songStats.totalPlaySeconds, + isSteamOnline = IsSteamOnline() + }; + } + + private void ApplyLegacyTextMirrors(UserInfoSnapshot snapshot) + { + if (user_registDate != null) + { + user_registDate.text = snapshot.registerDate; + } + + if (userSource != null) + { + userSource.text = ChannelLabel; + userSource.color = snapshot.isSteamOnline ? SteamOnlineColor : Color.black; + } + + if (totalPlayTime != null) + { + totalPlayTime.text = FormatPlayTime(snapshot.totalPlaySeconds); + } + + if (fcAmount != null && string.IsNullOrWhiteSpace(fcAmount.text)) + { + fcAmount.text = "-"; + } + + if (firstFCsong != null && string.IsNullOrWhiteSpace(firstFCsong.text)) + { + firstFCsong.text = "-"; + } + } + + private void RebuildInfoEntries(UserInfoSnapshot snapshot) + { + ClearInfoEntries(); + CacheDefaultInfoColor(); + + SpawnInfoEntry("\u6ce8\u518c\u65e5\u671f", snapshot.registerDate); + SpawnInfoEntry("\u62e5\u6709\u89d2\u8272\u6570\u91cf", snapshot.ownedHeroCount.ToString()); + SpawnInfoEntry("\u62e5\u6709\u6b4c\u66f2\u6570\u91cf", snapshot.ownedSongCount.ToString()); + SpawnInfoEntry("\u603b\u6e38\u620f\u6b21\u6570", snapshot.totalGameEnterCount.ToString()); + SpawnInfoEntry("\u6e38\u73a9\u603b\u65f6\u957f", FormatPlayTime(snapshot.totalPlaySeconds)); + SpawnInfoEntry("\u6e20\u9053", ChannelLabel, snapshot.isSteamOnline ? SteamOnlineColor : defaultInfoColor); + SpawnInfoEntry("\u7248\u672c", VersionLabel); + } + + private void ClearInfoEntries() + { + for (int i = 0; i < spawnedInfoEntries.Count; i++) + { + if (spawnedInfoEntries[i] != null) + { + Destroy(spawnedInfoEntries[i]); + } + } + + spawnedInfoEntries.Clear(); + } + + private void CacheDefaultInfoColor() + { + if (pInfoPrefab == null) + { + return; + } + + pInfoPrefab sample = pInfoPrefab.GetComponent(); + if (sample != null && sample.this_iDetail != null) + { + defaultInfoColor = sample.this_iDetail.color; + } + } + + private void SpawnInfoEntry(string title, string detail, Color? detailColor = null) + { + if (pInfoPrefab == null || pInfoParent == null) + { + return; + } + + GameObject entryObject = Instantiate(pInfoPrefab, pInfoParent); + spawnedInfoEntries.Add(entryObject); + + pInfoPrefab entry = entryObject.GetComponent(); + if (entry == null) + { + return; + } + + if (entry.this_iTitle != null) + { + entry.this_iTitle.text = title; + } + + if (entry.this_iDetail != null) + { + entry.this_iDetail.text = detail; + entry.this_iDetail.color = detailColor ?? defaultInfoColor; + } + } + + private static int CountOwnedHeroes() + { + AllyHero_SO[] loadedHeroes = Resources.LoadAll(string.Empty); + HashSet uniqueHeroIds = new HashSet(); + int ownedCount = 0; + + AllyHeroDeployLedger ledger = AllyHeroDeployLedger.EnsureInstance(); + ledger.InitializeIfNeeded(); + + for (int i = 0; i < loadedHeroes.Length; i++) + { + AllyHero_SO hero = loadedHeroes[i]; + if (hero == null || !uniqueHeroIds.Add(hero.ally_heroID)) + { + continue; + } + + hero.ally_battleDeployCount = ledger.GetDeployCount(hero.ally_heroID); + if (hero.isUnlocked) + { + ownedCount++; + } + } + + return ownedCount; + } + + private static SongStats CollectSongStats() + { + SongData[] songs = Resources.LoadAll(SongResourcesPath); + HashSet uniqueSongIds = new HashSet(); + SongStats stats = new SongStats(); + + for (int i = 0; i < songs.Length; i++) + { + SongData song = songs[i]; + if (song == null || !uniqueSongIds.Add(song.songID)) + { + continue; + } + + song.LoadPersistent(); + + if (song.isUnlocked) + { + stats.ownedSongCount++; + } + + stats.totalGameEnterCount += Mathf.Max(0, song.game_enterTimes); + stats.totalPlaySeconds += Math.Max(0f, song.time_totalPlayingTime); + } + + return stats; + } + + private static string FormatPlayTime(double totalSeconds) + { + TimeSpan span = TimeSpan.FromSeconds(Math.Max(0d, totalSeconds)); + if (span.TotalHours >= 1d) + { + return string.Format("{0:D2}\u5c0f\u65f6{1:D2}\u5206\u949f", (int)span.TotalHours, span.Minutes); + } + + if (span.TotalMinutes >= 1d) + { + return string.Format("{0:D2}\u5206\u949f{1:D2}\u79d2", (int)span.TotalMinutes, span.Seconds); + } + + return string.Format("{0:D2}\u79d2", Math.Max(0, span.Seconds)); + } + + private IEnumerator LoadSteamProfileAsync(bool isSteamOnline) + { + int initRetry = 0; + while (initRetry < 25 && !SteamManager.Initialized) + { + initRetry++; + yield return new WaitForSecondsRealtime(0.2f); + } + + if (!SteamManager.Initialized) + { + ApplySteamUnavailable(); + yield break; + } + + int retryCount = 0; + while (retryCount < 20) + { + if (TryPopulateSteamProfile(isSteamOnline)) + { + yield break; + } + + retryCount++; + yield return new WaitForSecondsRealtime(0.25f); + } + + ApplySteamUnavailable(); + } + + private void ApplySteamUnavailable() + { + if (userNameText != null) + { + userNameText.text = "Steam Unavailable"; + } + + if (userIDText != null) + { + userIDText.text = "-"; + } + + if (userSource != null) + { + userSource.text = ChannelLabel; + userSource.color = Color.black; + } + } + + private static bool IsSteamOnline() + { + if (!SteamManager.Initialized) + { + return false; + } + + try + { + return SteamFriends.GetPersonaState() != EPersonaState.k_EPersonaStateOffline; + } + catch + { + return false; + } + } + + private bool TryPopulateSteamProfile(bool isSteamOnline) + { + try + { + CSteamID steamId = SteamUser.GetSteamID(); + string personaName = SteamFriends.GetPersonaName(); + + if (!steamId.IsValid() || string.IsNullOrWhiteSpace(personaName)) + { + return false; + } + + if (userNameText != null) + { + userNameText.text = personaName; + } + + if (userIDText != null) + { + userIDText.text = steamId.m_SteamID.ToString(); + } + + if (userSource != null) + { + userSource.text = ChannelLabel; + userSource.color = isSteamOnline ? SteamOnlineColor : Color.black; + } + + return TryApplySteamAvatar(steamId) || userProfileImage == null; + } + catch + { + return false; + } + } + + private bool TryApplySteamAvatar(CSteamID steamId) + { + if (userProfileImage == null) + { + return true; + } + + int imageId = SteamFriends.GetLargeFriendAvatar(steamId); + if (imageId == -1) + { + return false; + } + + if (imageId == 0) + { + imageId = SteamFriends.GetMediumFriendAvatar(steamId); + } + + if (imageId < 0) + { + return false; + } + + uint width; + uint height; + if (!SteamUtils.GetImageSize(imageId, out width, out height) || width == 0 || height == 0) + { + return false; + } + + byte[] imageBuffer = new byte[width * height * 4]; + if (!SteamUtils.GetImageRGBA(imageId, imageBuffer, imageBuffer.Length)) + { + return false; + } + + Texture2D sourceTexture = new Texture2D((int)width, (int)height, TextureFormat.RGBA32, false); + sourceTexture.LoadRawTextureData(imageBuffer); + sourceTexture.Apply(); + + Texture2D flippedTexture = new Texture2D((int)width, (int)height, TextureFormat.RGBA32, false); + for (int y = 0; y < (int)height; y++) + { + Color[] rowPixels = sourceTexture.GetPixels(0, y, (int)width, 1); + flippedTexture.SetPixels(0, (int)height - 1 - y, (int)width, 1, rowPixels); + } + + flippedTexture.Apply(); + userProfileImage.sprite = Sprite.Create( + flippedTexture, + new Rect(0, 0, flippedTexture.width, flippedTexture.height), + new Vector2(0.5f, 0.5f)); + + return true; + } + + private struct UserInfoSnapshot + { + public string registerDate; + public int ownedHeroCount; + public int ownedSongCount; + public int totalGameEnterCount; + public double totalPlaySeconds; + public bool isSteamOnline; + } + + private struct SongStats + { + public int ownedSongCount; + public int totalGameEnterCount; + public double totalPlaySeconds; + } +} diff --git a/Assets/playerDisplay/UI_Player.cs.meta b/Assets/playerDisplay/UI_Player.cs.meta new file mode 100644 index 00000000..9da5dab7 --- /dev/null +++ b/Assets/playerDisplay/UI_Player.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 01cdae7333ce2284fbd8246a1d450c3e \ No newline at end of file diff --git a/Assets/playerDisplay/pInfoPrefab.cs b/Assets/playerDisplay/pInfoPrefab.cs new file mode 100644 index 00000000..08fad192 --- /dev/null +++ b/Assets/playerDisplay/pInfoPrefab.cs @@ -0,0 +1,10 @@ +using UnityEngine; +using UnityEngine.UI; + +public class pInfoPrefab : MonoBehaviour +{ + public Text this_iTitle; + public Text this_iDetail; + + public CanvasGroup this_cGroup; +} diff --git a/Assets/playerDisplay/pInfoPrefab.cs.meta b/Assets/playerDisplay/pInfoPrefab.cs.meta new file mode 100644 index 00000000..d2da79fb --- /dev/null +++ b/Assets/playerDisplay/pInfoPrefab.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 00d9c70de03d5584caa4f58f04471b5b \ No newline at end of file diff --git a/Assets/playerDisplay/pInfoPrefab.prefab b/Assets/playerDisplay/pInfoPrefab.prefab new file mode 100644 index 00000000..b3e960cc --- /dev/null +++ b/Assets/playerDisplay/pInfoPrefab.prefab @@ -0,0 +1,302 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3594751955591054238 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7844838762169233749} + - component: {fileID: 8249222467498812482} + - component: {fileID: 6848707442284099788} + m_Layer: 5 + m_Name: btm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7844838762169233749 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3594751955591054238} + 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: 1539763450377334860} + - {fileID: 5807069226747538177} + m_Father: {fileID: 7358548625640972063} + 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: 200, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8249222467498812482 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3594751955591054238} + m_CullTransparentMesh: 1 +--- !u!114 &6848707442284099788 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3594751955591054238} + 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 &5781423114854912448 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1539763450377334860} + - component: {fileID: 3784454099600438642} + - component: {fileID: 358120151119990818} + m_Layer: 5 + m_Name: title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1539763450377334860 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5781423114854912448} + 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: 7844838762169233749} + 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: 27.6} + m_SizeDelta: {x: 160, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3784454099600438642 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5781423114854912448} + m_CullTransparentMesh: 1 +--- !u!114 &358120151119990818 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5781423114854912448} + 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: 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: "\u6807\u9898" +--- !u!1 &6256686326704969565 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5807069226747538177} + - component: {fileID: 4141175763355791591} + - component: {fileID: 1252686709029270882} + m_Layer: 5 + m_Name: info + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5807069226747538177 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6256686326704969565} + 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: 7844838762169233749} + 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: 160, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4141175763355791591 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6256686326704969565} + m_CullTransparentMesh: 1 +--- !u!114 &1252686709029270882 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6256686326704969565} + 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: 16 + 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: "\u4FE1\u606F" +--- !u!1 &8840060924241115349 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7358548625640972063} + - component: {fileID: 6252520831482713548} + - component: {fileID: 3983549219482858809} + m_Layer: 5 + m_Name: pInfoPrefab + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7358548625640972063 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8840060924241115349} + 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: 7844838762169233749} + 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: 200, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &6252520831482713548 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8840060924241115349} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 00d9c70de03d5584caa4f58f04471b5b, type: 3} + m_Name: + m_EditorClassIdentifier: + this_iTitle: {fileID: 358120151119990818} + this_iDetail: {fileID: 1252686709029270882} + this_cGroup: {fileID: 3983549219482858809} +--- !u!225 &3983549219482858809 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8840060924241115349} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 diff --git a/Assets/playerDisplay/pInfoPrefab.prefab.meta b/Assets/playerDisplay/pInfoPrefab.prefab.meta new file mode 100644 index 00000000..03ae4d95 --- /dev/null +++ b/Assets/playerDisplay/pInfoPrefab.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 54a993fe0ba0c4b48b7486f77418c8fc +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/playerInfoDisplay.meta b/Assets/playerInfoDisplay.meta new file mode 100644 index 00000000..8cce0733 --- /dev/null +++ b/Assets/playerInfoDisplay.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fe6dde895e195ad42aa4b807dec540ef +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/playerInfoDisplay/gameHistoryPrefab.prefab b/Assets/playerInfoDisplay/gameHistoryPrefab.prefab new file mode 100644 index 00000000..15a5136d --- /dev/null +++ b/Assets/playerInfoDisplay/gameHistoryPrefab.prefab @@ -0,0 +1,778 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &234771199352862083 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4123324077405398592} + - component: {fileID: 8960188264249085605} + - component: {fileID: 3250977055161125869} + - component: {fileID: 8822128272939602658} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4123324077405398592 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 234771199352862083} + 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: 4338761642545663007} + m_Father: {fileID: 8208094080659918358} + 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.239} + m_SizeDelta: {x: 631.94, y: 32} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8960188264249085605 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 234771199352862083} + m_CullTransparentMesh: 1 +--- !u!114 &3250977055161125869 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 234771199352862083} + 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: 9ebd9ce7600225b48a92c3900b8188fc, 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.5 +--- !u!114 &8822128272939602658 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 234771199352862083} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 1 +--- !u!1 &605146429474934285 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3408883077910921622} + - component: {fileID: 914656992227190605} + - component: {fileID: 6942412580199853785} + m_Layer: 5 + m_Name: ratios + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3408883077910921622 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 605146429474934285} + 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: 8208094080659918358} + 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.94, y: 0} + m_SizeDelta: {x: 105.454, y: 33} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &914656992227190605 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 605146429474934285} + m_CullTransparentMesh: 1 +--- !u!114 &6942412580199853785 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 605146429474934285} + 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: 11 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'ACC: 99.99% + + SRKS: 0' +--- !u!1 &1094181788329206573 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3373422848972785680} + - component: {fileID: 5470506153239392007} + - component: {fileID: 7919000474169282653} + m_Layer: 5 + m_Name: score + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3373422848972785680 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1094181788329206573} + 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: 8208094080659918358} + 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: 177.90303, y: 0} + m_SizeDelta: {x: 106.604, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5470506153239392007 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1094181788329206573} + m_CullTransparentMesh: 1 +--- !u!114 &7919000474169282653 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1094181788329206573} + 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: 22 + 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: 1234567 +--- !u!1 &2917378665968473732 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4891152336866190808} + - component: {fileID: 137569880202737436} + - component: {fileID: 327122142813215607} + m_Layer: 5 + m_Name: playtime + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4891152336866190808 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2917378665968473732} + 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: 8208094080659918358} + 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: -261.66998, y: 0} + m_SizeDelta: {x: 92.295, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &137569880202737436 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2917378665968473732} + m_CullTransparentMesh: 1 +--- !u!114 &327122142813215607 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2917378665968473732} + 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: 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: 03-11, 20:25 +--- !u!1 &4621517492616896599 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7028528044515112815} + - component: {fileID: 6640949252045097570} + m_Layer: 5 + m_Name: gameHistoryPrefab + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7028528044515112815 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4621517492616896599} + 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: 8208094080659918358} + m_Father: {fileID: 0} + 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: 100, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &6640949252045097570 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4621517492616896599} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ef37b79f388055c42814b61b99307a88, type: 3} + m_Name: + m_EditorClassIdentifier: + songImg: {fileID: 2020282907842096563} + playtime: {fileID: 327122142813215607} + songName: {fileID: 5623005123688252722} + songDfct: {fileID: 3212708411851175897} + songPerf: {fileID: 6942412580199853785} + songScore: {fileID: 7919000474169282653} + songRankImg: {fileID: 122816322594050325} + rc: {fileID: 11400000, guid: 951debb97a9b89f48885c82bb601533a, type: 2} +--- !u!1 &6079840058504322514 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8635158262134080350} + - component: {fileID: 1355116519816520013} + - component: {fileID: 5623005123688252722} + m_Layer: 5 + m_Name: name + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8635158262134080350 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6079840058504322514} + 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: 8208094080659918358} + 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: -123.614, y: 0} + m_SizeDelta: {x: 155.473, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1355116519816520013 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6079840058504322514} + m_CullTransparentMesh: 1 +--- !u!114 &5623005123688252722 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6079840058504322514} + 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: 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: "\u8FD9\u4E0D\u662F\u5FEB\u5634\u6211\u6253\u5F00\u4F60\u7CFB\u7EDF\u53D1\u73B0\u4F60\u8FD8\u7528\u7684\u662FWindows7" +--- !u!1 &6320723473554693168 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4456371091438042425} + - component: {fileID: 9142928039487649196} + - component: {fileID: 3212708411851175897} + m_Layer: 5 + m_Name: difficulty + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4456371091438042425 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6320723473554693168} + 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: 8208094080659918358} + 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.3, y: 0} + m_SizeDelta: {x: 53.437, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &9142928039487649196 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6320723473554693168} + m_CullTransparentMesh: 1 +--- !u!114 &3212708411851175897 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6320723473554693168} + 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: 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: 18_HD +--- !u!1 &6988015895875826385 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8208094080659918358} + - component: {fileID: 5416189281710205050} + - component: {fileID: 2692334955411405539} + m_Layer: 5 + m_Name: btm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8208094080659918358 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6988015895875826385} + 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: 4123324077405398592} + - {fileID: 4891152336866190808} + - {fileID: 8635158262134080350} + - {fileID: 4456371091438042425} + - {fileID: 3408883077910921622} + - {fileID: 3373422848972785680} + - {fileID: 849455618348688958} + m_Father: {fileID: 7028528044515112815} + 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: 650, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5416189281710205050 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6988015895875826385} + m_CullTransparentMesh: 1 +--- !u!114 &2692334955411405539 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6988015895875826385} + 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 &7850640493555147263 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4338761642545663007} + - component: {fileID: 1233519261338957310} + - component: {fileID: 2020282907842096563} + m_Layer: 5 + m_Name: maskBtm + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4338761642545663007 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7850640493555147263} + 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: 4123324077405398592} + 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: 639.522, y: 86.744} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1233519261338957310 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7850640493555147263} + m_CullTransparentMesh: 1 +--- !u!114 &2020282907842096563 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7850640493555147263} + 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: 9732ceca4a8f8ab419584bd34710c04a, 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 &7915518511070944398 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 849455618348688958} + - component: {fileID: 4741121237072454142} + - component: {fileID: 122816322594050325} + m_Layer: 5 + m_Name: level + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &849455618348688958 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7915518511070944398} + 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: 8208094080659918358} + 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: 271.2, y: 0} + m_SizeDelta: {x: 80, y: 80} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4741121237072454142 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7915518511070944398} + m_CullTransparentMesh: 1 +--- !u!114 &122816322594050325 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7915518511070944398} + 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: 4f1e610ba464ef84594814374653f0a6, 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 diff --git a/Assets/playerInfoDisplay/gameHistoryPrefab.prefab.meta b/Assets/playerInfoDisplay/gameHistoryPrefab.prefab.meta new file mode 100644 index 00000000..c4c38089 --- /dev/null +++ b/Assets/playerInfoDisplay/gameHistoryPrefab.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8c7f1125b672ba54fb24d10e0cc4095a +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/playerInfoDisplay/ghPrefab.cs b/Assets/playerInfoDisplay/ghPrefab.cs new file mode 100644 index 00000000..1d6318d0 --- /dev/null +++ b/Assets/playerInfoDisplay/ghPrefab.cs @@ -0,0 +1,156 @@ +using UnityEngine; +using UnityEngine.UI; + +public class ghPrefab : MonoBehaviour +{ + [Header("hahahaha")] + public Image songImg; + public Text playtime; + public Text songName; + public Text songDfct; + public Text songPerf; + public Text songScore; + public Image songRankImg; + + [Header("rank config")] + public RankConfig rc; + + private static readonly Color EarlySettlementColor = new Color32(204, 51, 51, 255); + private static readonly Color AllPerfectColor = new Color32(0, 100, 0, 255); + private const string UnreadableText = "\u65e0\u6cd5\u8bfb\u53d6"; + + public void Setup(RecentPlayRecord record, SongData songData) + { + if (record == null) + { + ApplyUnreadableFallback(); + return; + } + + if (songImg != null) + { + songImg.sprite = songData != null ? songData.illustration : null; + songImg.enabled = songImg.sprite != null; + } + + if (playtime != null) + { + playtime.text = string.IsNullOrWhiteSpace(record.playedAt) ? "--" : record.playedAt; + } + + if (songName != null) + { + string displayName = string.IsNullOrWhiteSpace(record.songName) ? "Unknown" : record.songName; + songName.text = FitTextWithEllipsis(songName, displayName); + } + + if (songDfct != null) + { + songDfct.text = string.IsNullOrWhiteSpace(record.difficultyDisplay) ? "UN" : record.difficultyDisplay; + } + + if (songPerf != null) + { + songPerf.text = "ACC: " + record.accuracy.ToString("F3") + "%\nSRKS: " + record.srks.ToString("F2"); + } + + if (songScore != null) + { + if (!record.scoreReadable) + { + songScore.text = UnreadableText; + songScore.color = Color.black; + } + else + { + songScore.text = record.totalScore.ToString(); + if (record.wasEarlySettlement) + { + songScore.color = EarlySettlementColor; + } + else if (record.wasAllPerfect) + { + songScore.color = AllPerfectColor; + } + else + { + songScore.color = Color.black; + } + } + } + + if (songRankImg != null) + { + if (rc != null) + { + float rankScore = record.scoreReadable ? record.totalScore : 0f; + songRankImg.sprite = rc.GetRankSprite(rankScore); + } + else + { + songRankImg.sprite = null; + } + } + } + + private void ApplyUnreadableFallback() + { + if (songImg != null) + { + songImg.sprite = null; + songImg.enabled = false; + } + + if (playtime != null) playtime.text = "--"; + if (songName != null) songName.text = "Unknown"; + if (songDfct != null) songDfct.text = "UN"; + if (songPerf != null) songPerf.text = "ACC: --\nSRKS: --"; + if (songScore != null) + { + songScore.text = UnreadableText; + songScore.color = Color.black; + } + + if (songRankImg != null) + { + songRankImg.sprite = rc != null ? rc.GetRankSprite(0f) : null; + } + } + + private static string FitTextWithEllipsis(Text target, string value) + { + if (target == null || string.IsNullOrEmpty(value)) + { + return value; + } + + RectTransform rt = target.rectTransform; + float availableWidth = rt != null ? rt.rect.width : 0f; + if (availableWidth <= 0f || target.font == null) + { + return value; + } + + TextGenerationSettings settings = target.GetGenerationSettings(new Vector2(availableWidth, rt.rect.height)); + float preferred = target.cachedTextGeneratorForLayout.GetPreferredWidth(value, settings) / target.pixelsPerUnit; + if (preferred <= availableWidth) + { + return value; + } + + const string ellipsis = "..."; + string trimmed = value; + while (trimmed.Length > 0) + { + trimmed = trimmed.Substring(0, trimmed.Length - 1); + string candidate = trimmed + ellipsis; + preferred = target.cachedTextGeneratorForLayout.GetPreferredWidth(candidate, settings) / target.pixelsPerUnit; + if (preferred <= availableWidth) + { + return candidate; + } + } + + return ellipsis; + } +} diff --git a/Assets/playerInfoDisplay/ghPrefab.cs.meta b/Assets/playerInfoDisplay/ghPrefab.cs.meta new file mode 100644 index 00000000..51b94118 --- /dev/null +++ b/Assets/playerInfoDisplay/ghPrefab.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: ef37b79f388055c42814b61b99307a88 \ No newline at end of file diff --git a/Assets/playerInfoDisplay/uRecentGameHistory.cs b/Assets/playerInfoDisplay/uRecentGameHistory.cs new file mode 100644 index 00000000..b92c2bbb --- /dev/null +++ b/Assets/playerInfoDisplay/uRecentGameHistory.cs @@ -0,0 +1,200 @@ +using UnityEngine; +using UnityEngine.UI; +using System.Collections.Generic; + +public class uRecentGameHistory : MonoBehaviour +{ + private const string SongResourcesPath = "song_songIndex"; + private const int MaxVisibleRecordCount = 5; + + [Header("gameobjects")] + public GameObject gameHistoryPrefab; + public Transform gameHistoryParent; + public Transform dGameHistoryParent; + public GameObject more_gameHistory; + + [Header("buttons")] + public Button more_gameHistoryButton; + public Button shut_gameHistoryButton; + + private SongData[] cachedSongs; + private readonly List previewEntries = new List(); + private readonly List detailEntries = new List(); + + private void Start() + { + BindButtons(); + if (more_gameHistory != null) + { + more_gameHistory.SetActive(false); + } + + RebuildHistory(); + } + + private void OnDestroy() + { + if (more_gameHistoryButton != null) + { + more_gameHistoryButton.onClick.RemoveListener(OpenDetailedHistory); + } + + if (shut_gameHistoryButton != null) + { + shut_gameHistoryButton.onClick.RemoveListener(CloseDetailedHistory); + } + } + + public void RebuildHistory() + { + if (gameHistoryParent == null || gameHistoryPrefab == null) + { + return; + } + + ClearEntries(previewEntries, gameHistoryParent); + cachedSongs = Resources.LoadAll(SongResourcesPath); + + var records = RecentPlayHistoryStore.GetRecords(); + if (records == null) + { + return; + } + + int visibleCount = Mathf.Min(records.Count, MaxVisibleRecordCount); + for (int i = 0; i < visibleCount; i++) + { + RecentPlayRecord record = records[i]; + if (record == null) + { + continue; + } + + GameObject instance = Instantiate(gameHistoryPrefab, gameHistoryParent); + previewEntries.Add(instance); + ghPrefab controller = instance.GetComponent(); + if (controller == null) + { + continue; + } + + controller.Setup(record, FindSongById(record.songID)); + } + } + + private void OpenDetailedHistory() + { + if (more_gameHistory != null) + { + more_gameHistory.SetActive(true); + } + + if (dGameHistoryParent == null || gameHistoryPrefab == null) + { + return; + } + + ClearEntries(detailEntries, dGameHistoryParent); + EnsureSongCache(); + + var records = RecentPlayHistoryStore.GetRecords(); + if (records == null) + { + return; + } + + for (int i = 0; i < records.Count; i++) + { + RecentPlayRecord record = records[i]; + if (record == null) + { + continue; + } + + GameObject instance = Instantiate(gameHistoryPrefab, dGameHistoryParent); + detailEntries.Add(instance); + + ghPrefab controller = instance.GetComponent(); + if (controller == null) + { + continue; + } + + controller.Setup(record, FindSongById(record.songID)); + } + } + + private void CloseDetailedHistory() + { + ClearEntries(detailEntries, dGameHistoryParent); + if (more_gameHistory != null) + { + more_gameHistory.SetActive(false); + } + } + + private SongData FindSongById(int songId) + { + if (songId <= 0 || cachedSongs == null) + { + return null; + } + + for (int i = 0; i < cachedSongs.Length; i++) + { + SongData song = cachedSongs[i]; + if (song != null && song.songID == songId) + { + return song; + } + } + + return null; + } + + private void BindButtons() + { + if (more_gameHistoryButton != null) + { + more_gameHistoryButton.onClick.RemoveListener(OpenDetailedHistory); + more_gameHistoryButton.onClick.AddListener(OpenDetailedHistory); + } + + if (shut_gameHistoryButton != null) + { + shut_gameHistoryButton.onClick.RemoveListener(CloseDetailedHistory); + shut_gameHistoryButton.onClick.AddListener(CloseDetailedHistory); + } + } + + private void EnsureSongCache() + { + if (cachedSongs == null || cachedSongs.Length == 0) + { + cachedSongs = Resources.LoadAll(SongResourcesPath); + } + } + + private static void ClearEntries(List entries, Transform parent) + { + for (int i = entries.Count - 1; i >= 0; i--) + { + if (entries[i] != null) + { + Destroy(entries[i]); + } + } + + entries.Clear(); + + if (parent == null) + { + return; + } + + for (int i = parent.childCount - 1; i >= 0; i--) + { + Destroy(parent.GetChild(i).gameObject); + } + } +} diff --git a/Assets/playerInfoDisplay/uRecentGameHistory.cs.meta b/Assets/playerInfoDisplay/uRecentGameHistory.cs.meta new file mode 100644 index 00000000..777f2eaa --- /dev/null +++ b/Assets/playerInfoDisplay/uRecentGameHistory.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: d4e289acd8282f743864eb651643e526 \ No newline at end of file diff --git a/Assets/scripts/Data/AllyHero_SO.cs b/Assets/scripts/Data/AllyHero_SO.cs index eeac6d5b..81323a16 100644 --- a/Assets/scripts/Data/AllyHero_SO.cs +++ b/Assets/scripts/Data/AllyHero_SO.cs @@ -8,6 +8,7 @@ public class AllyHero_SO : ScriptableObject public string ally_heroName; public string ally_heroDesignation; public int ally_heroID; + public bool isUnlocked; [Header("Inspector")] public Sprite ally_heroImage; @@ -88,6 +89,7 @@ public class AllyHero_SO : ScriptableObject [Header("Inspector")] public int ally_currentEXP; + public int ally_battleDeployCount; [Header("Skills")] public SkillDefinition[] availableSkills; @@ -201,4 +203,32 @@ public class AllyHero_SO : ScriptableObject if (payload == null) return; equippedSkillGroupIDs = payload.equippedSkillGroupIDs ?? new int[0]; } + + public void SetUnlocked(bool value) + { + if (isUnlocked == value) return; + isUnlocked = value; +#if UNITY_EDITOR + UnityEditor.EditorUtility.SetDirty(this); +#endif + } + + public void IncrementBattleDeployCount(int amount = 1) + { + if (amount <= 0) return; + AllyHeroDeployLedger.EnsureInstance().IncrementDeployCount(this, amount); +#if UNITY_EDITOR + UnityEditor.EditorUtility.SetDirty(this); +#endif + } + + public void LoadBattleDeployCountFromLocal() + { + ally_battleDeployCount = AllyHeroDeployLedger.EnsureInstance().GetDeployCount(ally_heroID); + } + + public void SaveBattleDeployCountToLocal() + { + AllyHeroDeployLedger.EnsureInstance().SaveNow(); + } } diff --git a/Assets/scripts/Data/Player_SO.cs b/Assets/scripts/Data/Player_SO.cs index e7ad1dc4..3d769efc 100644 --- a/Assets/scripts/Data/Player_SO.cs +++ b/Assets/scripts/Data/Player_SO.cs @@ -5,20 +5,23 @@ public class Player_SO : ScriptableObject { [Header("Inspector")] public int player_currentEXP; - public int player_currentLevel; [Header("economics")] [SerializeField] private int player_coins; [SerializeField] private int player_material; [Header("exp bottles")] - [SerializeField] private int emptyExpBottle78000; [SerializeField] private int commonExpBottle78001; [SerializeField] private int mediumExpBottle78002; [SerializeField] private int superiorExpBottle78003; [SerializeField] private int supremeExpBottle78004; [SerializeField] private int extraordinaryExpBottle78005; [SerializeField] private int celestialExpBottle78006; + + [Header("combat analytics")] + [SerializeField] private float uRankingScore; + + [Header("dush materials")] [SerializeField] private int dushMaterial78021; [SerializeField] private int dushMaterial78022; [SerializeField] private int dushMaterial78023; @@ -37,6 +40,11 @@ public class Player_SO : ScriptableObject get { return player_material; } } + public float URankingScore + { + get { return uRankingScore; } + } + public void SetCoins(int value) { player_coins = Mathf.Max(0, value); @@ -74,6 +82,22 @@ public class Player_SO : ScriptableObject PersistEditorChanges(); } + public void SetURankingScore(float value) + { + uRankingScore = Mathf.Max(0f, value); + PersistEditorChanges(); + } + + public void AddURankingScore(float delta) + { + if (Mathf.Approximately(delta, 0f)) + { + return; + } + + SetURankingScore(uRankingScore + delta); + } + public bool TrySpendCoins(int amount) { if (amount <= 0) @@ -96,29 +120,11 @@ public class Player_SO : ScriptableObject PersistEditorChanges(); } - public int GetLegacyExpBottleCount(string fieldName) - { - switch (fieldName) - { - case "emptyExpBottle78000": return emptyExpBottle78000; - case "commonExpBottle78001": return commonExpBottle78001; - case "mediumExpBottle78002": return mediumExpBottle78002; - case "superiorExpBottle78003": return superiorExpBottle78003; - case "supremeExpBottle78004": return supremeExpBottle78004; - case "extraordinaryExpBottle78005": return extraordinaryExpBottle78005; - case "celestialExpBottle78006": return celestialExpBottle78006; - default: return 0; - } - } - public void SetLegacyExpBottleCount(string fieldName, int value) { int safeValue = Mathf.Max(0, value); switch (fieldName) { - case "emptyExpBottle78000": - emptyExpBottle78000 = safeValue; - break; case "commonExpBottle78001": commonExpBottle78001 = safeValue; break; diff --git a/Assets/scripts/DataCheck.cs b/Assets/scripts/DataCheck.cs index b1bb5079..e2547744 100644 --- a/Assets/scripts/DataCheck.cs +++ b/Assets/scripts/DataCheck.cs @@ -1,99 +1,75 @@ -using UnityEngine; -using System.IO; -using System.Threading.Tasks; +using System; using System.Collections.Generic; +using System.IO; +using UnityEngine; namespace Bansonic.datacheck { public class DataCheck : MonoBehaviour { [Header("Settings")] - [Tooltip("是否在游戏启动时自动执行异步数据检查")] + [Tooltip("是否在游戏启动时自动校验歌曲运行时存档")] public bool checkOnStart = true; - private const string SALT = "bansonic2026@fudongyouxi"; + private const string Salt = "bansonic2026@fudongyouxi"; + private const string SongRuntimeCategory = "song_runtime"; - async void Start() + private void Start() { if (!checkOnStart) { - Debug.Log("[DataCheck] 自动检查已关闭 (checkOnStart = false)"); + Debug.Log("[DataCheck] 自动校验已关闭。"); return; } - Debug.Log("[DataCheck] 开始异步验证所有歌曲存档..."); - - // 记录开始时间 - float startTime = Time.realtimeSinceStartup; + ValidateSongRuntimeSaves(); + } - int totalFiles = 0; + private void ValidateSongRuntimeSaves() + { + float startTime = Time.realtimeSinceStartup; + string persistentPath = Application.persistentDataPath; + string legacyRoot = persistentPath; + + int encryptedFileCount = SecureSaveVault.CountEncryptedFiles(SongRuntimeCategory); + int legacyFileCount = 0; + try + { + legacyFileCount = Directory.GetFiles(legacyRoot, "SongData_*.json", SearchOption.TopDirectoryOnly).Length; + } + catch (Exception ex) + { + Debug.LogWarning($"[DataCheck] 统计旧版歌曲存档失败: {ex.Message}"); + } + + List loadedJsonList = SecureSaveVault.LoadAllRawJson(SongRuntimeCategory, legacyRoot, "SongData_*.json"); + + int totalFiles = Math.Max(encryptedFileCount + legacyFileCount, loadedJsonList.Count); int corruptedFiles = 0; - // 在主线程提前获取路径,避免子线程调用 Unity API 报错 - string persistentPath = Application.persistentDataPath; - - // 执行异步检查任务 - await Task.Run(() => + for (int i = 0; i < loadedJsonList.Count; i++) { - string path = persistentPath; - string[] files = Directory.GetFiles(path, "SongData_*.json"); - totalFiles = files.Length; - - foreach (string file in files) + string json = loadedJsonList[i]; + SongDataSerializable serializable; + if (!SongData.VerifyJsonIntegrity(json, Salt, out serializable)) { - try - { - string content = File.ReadAllText(file); - // 1. 首先尝试完整校验(包含 Hash) - if (!SongData.VerifyJsonIntegrity(content, SALT, out SongDataSerializable serializable)) - { - // 2. 如果校验失败,尝试直接解析 JSON(不看 Hash) - try - { - SongDataSerializable fallbackData = JsonUtility.FromJson(content); - if (fallbackData != null) - { - // 属于“正常更新”:格式变动导致 Hash 不匹配,但数据可读 - // 重新计算 Hash 并保存以修复文件 - string jsonWithoutHash = JsonUtility.ToJson(fallbackData); - fallbackData.dataHash = SongData.StaticCalculateMD5(jsonWithoutHash + SALT); - string fixedJson = JsonUtility.ToJson(fallbackData, true); - File.WriteAllText(file, fixedJson); - - Debug.Log($"[DataCheck] 已自动修复正常更新的存档: {Path.GetFileName(file)}"); - } - else - { - // 彻底无法解析,视为损坏 - corruptedFiles++; - Debug.LogError($"[DataCheck] 存档已损坏且无法修复: {Path.GetFileName(file)}"); - } - } - catch - { - corruptedFiles++; - Debug.LogError($"[DataCheck] 存档严重损坏: {Path.GetFileName(file)}"); - } - } - } - catch (System.Exception e) - { - corruptedFiles++; - Debug.LogError($"[DataCheck] 读取文件失败 {file}: {e.Message}"); - } + corruptedFiles++; } - }); + } + + int envelopeFailedFiles = Math.Max(0, encryptedFileCount - loadedJsonList.Count + legacyFileCount); + corruptedFiles += envelopeFailedFiles; float duration = Time.realtimeSinceStartup - startTime; - Debug.Log($"[DataCheck] 验证完成。耗时: {duration:F4}s | 总文件: {totalFiles} | 损坏/篡改: {corruptedFiles}"); - + Debug.Log($"[DataCheck] 歌曲存档校验完成。耗时: {duration:F4}s | 总文件: {totalFiles} | 异常/篡改: {corruptedFiles}"); + if (corruptedFiles > 0) { - Debug.LogWarning("[DataCheck] 部分存档存在异常,SongData 加载时将自动修复。"); + Debug.LogWarning("[DataCheck] 检测到异常歌曲存档。安全存档层已阻止被破坏的数据继续参与读取。"); } else if (totalFiles > 0) { - Debug.Log("[DataCheck] 所有存档通过一致性校验,数据安全。"); + Debug.Log("[DataCheck] 所有歌曲运行时存档通过校验。"); } } } diff --git a/Assets/scripts/InGameAchievements/InGamePerformanceManager.cs b/Assets/scripts/InGameAchievements/InGamePerformanceManager.cs index e38bce92..10ec17a7 100644 --- a/Assets/scripts/InGameAchievements/InGamePerformanceManager.cs +++ b/Assets/scripts/InGameAchievements/InGamePerformanceManager.cs @@ -5,6 +5,7 @@ using UnityEngine; public class InGamePerformanceManager : MonoBehaviour { public static InGamePerformanceManager Instance { get; private set; } + public int HighestComboThisRun { get; private set; } [Header("Inspector")] [Tooltip("Achievement definitions loaded from Resources.")] @@ -37,6 +38,7 @@ public class InGamePerformanceManager : MonoBehaviour if (Instance == null) { Instance = this; + HighestComboThisRun = 0; LoadAchievementLibrary(); } else @@ -98,6 +100,11 @@ public class InGamePerformanceManager : MonoBehaviour public void UpdateCombo(int currentCombo) { + if (currentCombo > HighestComboThisRun) + { + HighestComboThisRun = currentCombo; + } + CheckAchievementsByCategory(AchievementCategory.Combo, currentCombo); } diff --git a/Assets/scripts/UI/Panel/UI_Panel_Mail.cs b/Assets/scripts/UI/Panel/UI_Panel_Mail.cs index 8ac21425..371b1ba7 100644 --- a/Assets/scripts/UI/Panel/UI_Panel_Mail.cs +++ b/Assets/scripts/UI/Panel/UI_Panel_Mail.cs @@ -263,20 +263,21 @@ public class UI_Panel_Mail : MonoBehaviour isReceived = mail.isReceived }); } - var json = JsonUtility.ToJson(data, true); - File.WriteAllText(GetSavePath(), json); + SecureSaveVault.SaveJson("mail_state", "runtime", data, GetLegacySavePath()); } MailSaveData LoadMailState() { - var path = GetSavePath(); - if (!File.Exists(path)) return null; - var json = File.ReadAllText(path); - if (string.IsNullOrEmpty(json)) return null; - return JsonUtility.FromJson(json); + MailSaveData data; + if (!SecureSaveVault.TryLoadJson("mail_state", "runtime", out data, GetLegacySavePath())) + { + return null; + } + + return data; } - string GetSavePath() + string GetLegacySavePath() { return Path.Combine(Application.persistentDataPath, "mail_state.json"); } diff --git a/Assets/scripts/UI/Panel/UI_Panel_Main.cs b/Assets/scripts/UI/Panel/UI_Panel_Main.cs index 490e5242..cd2ab14e 100644 --- a/Assets/scripts/UI/Panel/UI_Panel_Main.cs +++ b/Assets/scripts/UI/Panel/UI_Panel_Main.cs @@ -308,6 +308,7 @@ public class UI_Panel_Main : Singleton_Mono () => { Try_Open_Prefab(ui_Panel_Encyclopendia, ref encyclopedia_Instance); + DailyTaskEventHub.ReportWatchStory(); }); if (button_Story != null) button_Story.onClick.AddListener( diff --git a/Assets/scripts/UI/Panel/dontdestroyonload/btm and top.prefab b/Assets/scripts/UI/Panel/dontdestroyonload/btm and top.prefab index 7d08cabc..256491ee 100644 --- a/Assets/scripts/UI/Panel/dontdestroyonload/btm and top.prefab +++ b/Assets/scripts/UI/Panel/dontdestroyonload/btm and top.prefab @@ -4317,6 +4317,128 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4051389278547494887 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5227902933222757190} + - component: {fileID: 1537305582658420602} + - component: {fileID: 7802510349101123134} + - component: {fileID: 814312480188450142} + m_Layer: 5 + m_Name: Button_bag + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5227902933222757190 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4051389278547494887} + 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: 3273746950969294248} + - {fileID: 7720263923492919812} + m_Father: {fileID: 3304862671657828245} + 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.5, y: 0.5} +--- !u!222 &1537305582658420602 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4051389278547494887} + m_CullTransparentMesh: 1 +--- !u!114 &7802510349101123134 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4051389278547494887} + 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: -1804059736019094365, guid: 48b7354ead1c3fe49920dd1aa2340b93, 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: 3 +--- !u!114 &814312480188450142 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4051389278547494887} + 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: 7802510349101123134} + m_OnClick: + m_PersistentCalls: + m_Calls: [] --- !u!1 &4323691831252766980 GameObject: m_ObjectHideFlags: 0 @@ -4432,7 +4554,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 451, y: -43} + m_AnchoredPosition: {x: 521.45, y: -43} m_SizeDelta: {x: 100, y: 100} m_Pivot: {x: 0, y: 0} --- !u!114 &786756074167547563 @@ -5553,6 +5675,156 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 5909026714256705340} m_CullTransparentMesh: 1 +--- !u!1 &5953527693605903714 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7720263923492919812} + - component: {fileID: 6328938927363608697} + - component: {fileID: 7955779152810041871} + m_Layer: 5 + m_Name: Image (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7720263923492919812 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5953527693605903714} + 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: 5227902933222757190} + 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: 25, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6328938927363608697 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5953527693605903714} + m_CullTransparentMesh: 1 +--- !u!114 &7955779152810041871 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5953527693605903714} + 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.22745098, g: 0.30980393, b: 0.3372549, 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: c122873ea5ca2554181d0e8fdbda4ffe, 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 &5988478905435832207 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3273746950969294248} + - component: {fileID: 5212592995083749236} + - component: {fileID: 9143070888354374478} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3273746950969294248 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5988478905435832207} + 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: 5227902933222757190} + 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: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5212592995083749236 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5988478905435832207} + m_CullTransparentMesh: 1 +--- !u!114 &9143070888354374478 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5988478905435832207} + 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 &6064513226240405794 GameObject: m_ObjectHideFlags: 0 @@ -6540,9 +6812,10 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 2149937566432696527} + - {fileID: 4827008926351111491} + - {fileID: 5227902933222757190} - {fileID: 1387828356511308751} - {fileID: 263900830868465045} - - {fileID: 4827008926351111491} m_Father: {fileID: 6434860682258445909} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -6573,7 +6846,7 @@ MonoBehaviour: m_CellSize: {x: 50, y: 50} m_Spacing: {x: 20, y: 20} m_Constraint: 1 - m_ConstraintCount: 4 + m_ConstraintCount: 5 --- !u!1 &7164294745953147232 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/scripts/Utilities/JsonDataHandler.cs b/Assets/scripts/Utilities/JsonDataHandler.cs index 6ef28926..5338aebe 100644 --- a/Assets/scripts/Utilities/JsonDataHandler.cs +++ b/Assets/scripts/Utilities/JsonDataHandler.cs @@ -1,48 +1,55 @@ -using UnityEngine; -using System.IO; +using System.IO; using Newtonsoft.Json; +using UnityEngine; public static class JsonDataHandler { - public static string File_Path_Folder => Application.persistentDataPath + "/FILE/"; - static readonly string File_Suffix = ".json"; + private const string SaveCategory = "generic_json_data"; + private static readonly string FileSuffix = ".json"; + + public static string File_Path_Folder => Path.Combine(Application.persistentDataPath, "FILE"); + public static string File_Path(string file_Name) { - return File_Path_Folder + file_Name + File_Suffix; + return Path.Combine(File_Path_Folder, file_Name + FileSuffix); } + public static void Save(T data, string file_Name, string saver_Name) { + string json = JsonConvert.SerializeObject(data, Formatting.Indented); + string legacyPath = File_Path(file_Name); + if (!SecureSaveVault.SaveRawJson(SaveCategory, file_Name, json, legacyPath)) + { + Debug.LogWarning($"[JsonDataHandler] Save failed: {file_Name}"); + return; + } - var path = File_Path(file_Name); - if (!File.Exists(path)) Directory.CreateDirectory(File_Path_Folder); - - var file_Data = JsonConvert.SerializeObject(data, Formatting.Indented); - // file_Data = $"//SAVER:[{saver_Name}]\n" + file_Data; - File.WriteAllText(path, file_Data); - - Debug.Log($"_Save_[{file_Name}{File_Suffix}]_FROM_[{saver_Name}]\n" + path); + Debug.Log($"_Save_[{file_Name}{FileSuffix}]_FROM_[{saver_Name}]\nSECURE::{SaveCategory}/{file_Name}"); } + public static bool Try_Load(ref T data, string file_Name) { - var path = File_Path(file_Name); - if (!File.Exists(path)) + string json; + if (!SecureSaveVault.TryLoadRawJson(SaveCategory, file_Name, out json, File_Path(file_Name))) { Debug.Log($"Load_[{file_Name}]_NULL"); return false; } - data = JsonConvert.DeserializeObject(System.IO.File.ReadAllText(path)); + + data = JsonConvert.DeserializeObject(json); return true; } + public static T Load(string file_Name) { - var path = File_Path(file_Name); - if (!System.IO.File.Exists(path)) + string json; + if (!SecureSaveVault.TryLoadRawJson(SaveCategory, file_Name, out json, File_Path(file_Name))) { Debug.Log($"Load_[{file_Name}]_NULL"); return default; - //return T; } - return JsonConvert.DeserializeObject(System.IO.File.ReadAllText(path)); + + return JsonConvert.DeserializeObject(json); } -} \ No newline at end of file +} diff --git a/Assets/scripts/_runtimecache/AllyHeroDeployLedger.cs b/Assets/scripts/_runtimecache/AllyHeroDeployLedger.cs new file mode 100644 index 00000000..d5d5e24a --- /dev/null +++ b/Assets/scripts/_runtimecache/AllyHeroDeployLedger.cs @@ -0,0 +1,215 @@ +using System.Collections.Generic; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +public sealed class AllyHeroDeployLedger : MonoBehaviour +{ + public static AllyHeroDeployLedger Instance { get; private set; } + + private readonly Dictionary deployCountsByHeroId = new Dictionary(); + private bool initialized; + private bool loadedFromSave; + + [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] + private static void Bootstrap() + { + EnsureInstance(); + } + + public static AllyHeroDeployLedger EnsureInstance() + { + if (Instance != null) + { + return Instance; + } + + GameObject host = new GameObject("__runtime_ally_deploy_bridge"); + host.hideFlags = HideFlags.HideInHierarchy | HideFlags.HideInInspector; + DontDestroyOnLoad(host); + Instance = host.AddComponent(); + return Instance; + } + + private void Awake() + { + if (Instance != null && Instance != this) + { + Destroy(gameObject); + return; + } + + Instance = this; + DontDestroyOnLoad(gameObject); + InitializeIfNeeded(); + } + + private void OnApplicationPause(bool pauseStatus) + { + if (pauseStatus) + { + SaveNow(); + } + } + + private void OnApplicationQuit() + { + SaveNow(); + } + + public void InitializeIfNeeded() + { + if (initialized) + { + return; + } + + AllyHeroDeployLedgerPayload payload; + loadedFromSave = AllyHeroDeployLedgerStorage.TryLoad(out payload); + RebuildFromPayload(payload); + initialized = true; + SeedFromHeroAssetsIfNeeded(); + SyncAllMirrorFlags(); + SaveNow(); + } + + public int GetDeployCount(int heroId) + { + InitializeIfNeeded(); + int count; + return deployCountsByHeroId.TryGetValue(heroId, out count) ? count : 0; + } + + public void IncrementDeployCount(AllyHero_SO hero, int amount = 1) + { + if (hero == null || hero.ally_heroID <= 0 || amount <= 0) + { + return; + } + + InitializeIfNeeded(); + int current = GetDeployCount(hero.ally_heroID); + long next = (long)current + amount; + deployCountsByHeroId[hero.ally_heroID] = next > int.MaxValue ? int.MaxValue : (int)next; + hero.ally_battleDeployCount = deployCountsByHeroId[hero.ally_heroID]; + MarkDirty(hero); + SaveNow(); + } + + public void SaveNow() + { + if (!initialized) + { + return; + } + + SyncAllMirrorFlags(); + AllyHeroDeployLedgerStorage.TrySave(BuildPayload()); + } + + private void RebuildFromPayload(AllyHeroDeployLedgerPayload payload) + { + deployCountsByHeroId.Clear(); + if (payload == null || payload.entries == null) + { + return; + } + + for (int i = 0; i < payload.entries.Count; i++) + { + AllyHeroDeployEntry entry = payload.entries[i]; + if (entry == null || entry.heroId <= 0) + { + continue; + } + + deployCountsByHeroId[entry.heroId] = Mathf.Max(0, entry.deployCount); + } + } + + private void SeedFromHeroAssetsIfNeeded() + { + AllyHero_SO[] heroes = Resources.LoadAll(string.Empty); + bool changed = false; + + for (int i = 0; i < heroes.Length; i++) + { + AllyHero_SO hero = heroes[i]; + if (hero == null || hero.ally_heroID <= 0) + { + continue; + } + + if (deployCountsByHeroId.ContainsKey(hero.ally_heroID)) + { + continue; + } + + if (hero.ally_battleDeployCount <= 0) + { + continue; + } + + deployCountsByHeroId[hero.ally_heroID] = Mathf.Max(0, hero.ally_battleDeployCount); + changed = true; + } + + if (changed && !loadedFromSave) + { + SaveNow(); + } + } + + private void SyncAllMirrorFlags() + { + AllyHero_SO[] heroes = Resources.LoadAll(string.Empty); + for (int i = 0; i < heroes.Length; i++) + { + AllyHero_SO hero = heroes[i]; + if (hero == null || hero.ally_heroID <= 0) + { + continue; + } + + int count; + if (!deployCountsByHeroId.TryGetValue(hero.ally_heroID, out count)) + { + count = 0; + } + + if (hero.ally_battleDeployCount == count) + { + continue; + } + + hero.ally_battleDeployCount = count; + MarkDirty(hero); + } + } + + private AllyHeroDeployLedgerPayload BuildPayload() + { + AllyHeroDeployLedgerPayload payload = AllyHeroDeployLedgerStorage.CreateDefaultPayload(); + foreach (KeyValuePair pair in deployCountsByHeroId) + { + payload.entries.Add(new AllyHeroDeployEntry + { + heroId = pair.Key, + deployCount = Mathf.Max(0, pair.Value) + }); + } + + return payload; + } + + private static void MarkDirty(AllyHero_SO hero) + { +#if UNITY_EDITOR + if (hero != null) + { + EditorUtility.SetDirty(hero); + } +#endif + } +} diff --git a/Assets/scripts/_runtimecache/AllyHeroDeployLedger.cs.meta b/Assets/scripts/_runtimecache/AllyHeroDeployLedger.cs.meta new file mode 100644 index 00000000..a41aaa91 --- /dev/null +++ b/Assets/scripts/_runtimecache/AllyHeroDeployLedger.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: b4b993c80d44994489f40e5a81dda7b3 \ No newline at end of file diff --git a/Assets/scripts/_runtimecache/AllyHeroDeployLedgerModels.cs b/Assets/scripts/_runtimecache/AllyHeroDeployLedgerModels.cs new file mode 100644 index 00000000..e51911f8 --- /dev/null +++ b/Assets/scripts/_runtimecache/AllyHeroDeployLedgerModels.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; + +[Serializable] +public class AllyHeroDeployEntry +{ + public int heroId; + public int deployCount; +} + +[Serializable] +public class AllyHeroDeployLedgerPayload +{ + public int version; + public long lastUpdatedUtcTicks; + public List entries = new List(); +} + +[Serializable] +public class AllyHeroDeployLedgerEnvelope +{ + public string payload; + public string signature; +} diff --git a/Assets/scripts/_runtimecache/AllyHeroDeployLedgerModels.cs.meta b/Assets/scripts/_runtimecache/AllyHeroDeployLedgerModels.cs.meta new file mode 100644 index 00000000..d8c5d318 --- /dev/null +++ b/Assets/scripts/_runtimecache/AllyHeroDeployLedgerModels.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 2e25750439aee8f4e93c609697703d8a \ No newline at end of file diff --git a/Assets/scripts/_runtimecache/AllyHeroDeployLedgerStorage.cs b/Assets/scripts/_runtimecache/AllyHeroDeployLedgerStorage.cs new file mode 100644 index 00000000..4728524b --- /dev/null +++ b/Assets/scripts/_runtimecache/AllyHeroDeployLedgerStorage.cs @@ -0,0 +1,187 @@ +using System; +using System.IO; +using System.Security.Cryptography; +using System.Text; +using UnityEngine; + +public static class AllyHeroDeployLedgerStorage +{ + private const string SecretSeed = "ban_total.ally_hero_deploy_ledger.v1"; + private const string VaultDirectoryName = ".cache_bridge"; + private const string MainFileName = ".ahd.dat"; + private const string BackupFileName = ".ahd.bak"; + private const string TempFileName = ".ahd.tmp"; + + private static string VaultDirectoryPath => Path.Combine(Application.persistentDataPath, VaultDirectoryName); + private static string MainFilePath => Path.Combine(VaultDirectoryPath, MainFileName); + private static string BackupFilePath => Path.Combine(VaultDirectoryPath, BackupFileName); + private static string TempFilePath => Path.Combine(VaultDirectoryPath, TempFileName); + + public static bool TryLoad(out AllyHeroDeployLedgerPayload payload) + { + payload = CreateDefaultPayload(); + + if (TryReadPayload(MainFilePath, out payload)) + { + return true; + } + + if (TryReadPayload(BackupFilePath, out payload)) + { + TrySave(payload); + return true; + } + + return false; + } + + public static bool TrySave(AllyHeroDeployLedgerPayload payload) + { + try + { + Directory.CreateDirectory(VaultDirectoryPath); + TryHidePath(VaultDirectoryPath); + + string envelopeJson = BuildEnvelopeJson(payload); + File.WriteAllText(TempFilePath, envelopeJson, Encoding.UTF8); + TryHidePath(TempFilePath); + + if (File.Exists(MainFilePath)) + { + File.Copy(MainFilePath, BackupFilePath, true); + TryHidePath(BackupFilePath); + } + + File.Copy(TempFilePath, MainFilePath, true); + TryHidePath(MainFilePath); + File.Delete(TempFilePath); + return true; + } + catch (Exception ex) + { + Debug.LogWarning("[AllyHeroDeployLedgerStorage] Save failed: " + ex.Message); + return false; + } + } + + public static AllyHeroDeployLedgerPayload CreateDefaultPayload() + { + return new AllyHeroDeployLedgerPayload + { + version = 1, + lastUpdatedUtcTicks = DateTime.UtcNow.Ticks, + entries = new System.Collections.Generic.List() + }; + } + + private static bool TryReadPayload(string path, out AllyHeroDeployLedgerPayload payload) + { + payload = CreateDefaultPayload(); + if (!File.Exists(path)) + { + return false; + } + + try + { + string envelopeJson = File.ReadAllText(path, Encoding.UTF8); + AllyHeroDeployLedgerEnvelope envelope = JsonUtility.FromJson(envelopeJson); + if (envelope == null || string.IsNullOrEmpty(envelope.payload) || string.IsNullOrEmpty(envelope.signature)) + { + return false; + } + + string expectedSignature = ComputeSignature(envelope.payload); + if (!string.Equals(expectedSignature, envelope.signature, StringComparison.Ordinal)) + { + Debug.LogWarning("[AllyHeroDeployLedgerStorage] Save signature mismatch. Possible tampering detected."); + return false; + } + + byte[] encryptedBytes = Convert.FromBase64String(envelope.payload); + byte[] plainBytes = XorTransform(encryptedBytes, BuildKeyBytes()); + string payloadJson = Encoding.UTF8.GetString(plainBytes); + AllyHeroDeployLedgerPayload loadedPayload = JsonUtility.FromJson(payloadJson); + if (loadedPayload == null) + { + return false; + } + + payload = loadedPayload; + return true; + } + catch (Exception ex) + { + Debug.LogWarning("[AllyHeroDeployLedgerStorage] Load failed from '" + path + "': " + ex.Message); + return false; + } + } + + private static string BuildEnvelopeJson(AllyHeroDeployLedgerPayload payload) + { + payload.lastUpdatedUtcTicks = DateTime.UtcNow.Ticks; + string payloadJson = JsonUtility.ToJson(payload, false); + byte[] plainBytes = Encoding.UTF8.GetBytes(payloadJson); + byte[] encryptedBytes = XorTransform(plainBytes, BuildKeyBytes()); + string payloadBase64 = Convert.ToBase64String(encryptedBytes); + + AllyHeroDeployLedgerEnvelope envelope = new AllyHeroDeployLedgerEnvelope + { + payload = payloadBase64, + signature = ComputeSignature(payloadBase64) + }; + + return JsonUtility.ToJson(envelope, false); + } + + private static string ComputeSignature(string payloadBase64) + { + string signText = payloadBase64 + "|" + Application.identifier + "|" + SecretSeed + "|" + SystemInfo.deviceUniqueIdentifier; + using (SHA256 sha = SHA256.Create()) + { + byte[] bytes = Encoding.UTF8.GetBytes(signText); + byte[] hash = sha.ComputeHash(bytes); + return Convert.ToBase64String(hash); + } + } + + private static byte[] BuildKeyBytes() + { + using (SHA256 sha = SHA256.Create()) + { + string seed = Application.identifier + "|" + SystemInfo.deviceUniqueIdentifier + "|" + SecretSeed; + return sha.ComputeHash(Encoding.UTF8.GetBytes(seed)); + } + } + + private static byte[] XorTransform(byte[] source, byte[] key) + { + byte[] result = new byte[source.Length]; + for (int i = 0; i < source.Length; i++) + { + result[i] = (byte)(source[i] ^ key[i % key.Length]); + } + + return result; + } + + private static void TryHidePath(string path) + { + try + { + if (Application.platform != RuntimePlatform.WindowsEditor && Application.platform != RuntimePlatform.WindowsPlayer) + { + return; + } + + FileAttributes attributes = File.GetAttributes(path); + if ((attributes & FileAttributes.Hidden) == 0) + { + File.SetAttributes(path, attributes | FileAttributes.Hidden); + } + } + catch + { + } + } +} diff --git a/Assets/scripts/_runtimecache/AllyHeroDeployLedgerStorage.cs.meta b/Assets/scripts/_runtimecache/AllyHeroDeployLedgerStorage.cs.meta new file mode 100644 index 00000000..a159879f --- /dev/null +++ b/Assets/scripts/_runtimecache/AllyHeroDeployLedgerStorage.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: eb496e1becc09464eb0ca23b9a69557d \ No newline at end of file diff --git a/Assets/scripts/_runtimecache/DushMaterialLedger.cs b/Assets/scripts/_runtimecache/DushMaterialLedger.cs index ffcf05cd..b437a579 100644 --- a/Assets/scripts/_runtimecache/DushMaterialLedger.cs +++ b/Assets/scripts/_runtimecache/DushMaterialLedger.cs @@ -109,6 +109,25 @@ public sealed class DushMaterialLedger : MonoBehaviour ChangeCount(DushMaterialCatalog.GetKey(kind), amount); } + public bool TryConsume(DushMaterialKind kind, int amount) + { + if (amount <= 0) + { + return false; + } + + string key = DushMaterialCatalog.GetKey(kind); + int current = GetCountByKey(key); + if (current < amount) + { + return false; + } + + ChangeCount(key, -amount); + DailyTaskEventHub.ReportUseItem(amount); + return true; + } + public bool SeedFromPlayerSo(Player_SO playerData, bool overwriteExistingCounts) { if (playerData == null) diff --git a/Assets/scripts/_runtimecache/LegacyPlainSaveMigrator.cs b/Assets/scripts/_runtimecache/LegacyPlainSaveMigrator.cs new file mode 100644 index 00000000..8c2db24c --- /dev/null +++ b/Assets/scripts/_runtimecache/LegacyPlainSaveMigrator.cs @@ -0,0 +1,102 @@ +using System.IO; +using UnityEngine; + +public static class LegacyPlainSaveMigrator +{ + [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] + private static void MigrateLegacyPlainFiles() + { + string root = Application.persistentDataPath; + MigrateSingleFile("daily_task", "runtime", Path.Combine(root, "daily_tasks.json")); + MigrateSingleFile("mail_state", "runtime", Path.Combine(root, "mail_state.json")); + MigrateSingleFile("store_state", "runtime", Path.Combine(root, "storeSystem_state.json")); + + MigratePattern("song_runtime", root, "SongData_*.json", fileNameWithoutExt => + { + if (fileNameWithoutExt.StartsWith("SongData_")) + { + return fileNameWithoutExt.Substring("SongData_".Length); + } + + return fileNameWithoutExt; + }); + + MigratePattern("song_export", Path.Combine(root, "SongDataJson"), "*.json", fileNameWithoutExt => fileNameWithoutExt); + MigratePattern("song_export", Path.Combine(root, "song_json_export"), "*.json", fileNameWithoutExt => fileNameWithoutExt); + } + + private static void MigrateSingleFile(string category, string key, string legacyPath) + { + if (!File.Exists(legacyPath)) + { + return; + } + + try + { + string json = File.ReadAllText(legacyPath); + if (string.IsNullOrEmpty(json)) + { + File.Delete(legacyPath); + return; + } + + SecureSaveVault.SaveRawJson(category, key, json, legacyPath); + } + catch (System.Exception ex) + { + Debug.LogWarning($"[LegacyPlainSaveMigrator] Failed to migrate {legacyPath}: {ex.Message}"); + } + } + + private static void MigratePattern(string category, string directory, string searchPattern, System.Func keyResolver) + { + if (!Directory.Exists(directory)) + { + return; + } + + string[] files = Directory.GetFiles(directory, searchPattern, SearchOption.TopDirectoryOnly); + for (int i = 0; i < files.Length; i++) + { + string legacyPath = files[i]; + try + { + string json = File.ReadAllText(legacyPath); + if (string.IsNullOrEmpty(json)) + { + File.Delete(legacyPath); + continue; + } + + string key = keyResolver != null ? keyResolver(Path.GetFileNameWithoutExtension(legacyPath)) : Path.GetFileNameWithoutExtension(legacyPath); + SecureSaveVault.SaveRawJson(category, key, json, legacyPath); + } + catch (System.Exception ex) + { + Debug.LogWarning($"[LegacyPlainSaveMigrator] Failed to migrate {legacyPath}: {ex.Message}"); + } + } + + TryDeleteDirectoryIfEmpty(directory); + } + + private static void TryDeleteDirectoryIfEmpty(string directory) + { + try + { + if (!Directory.Exists(directory)) + { + return; + } + + if (Directory.GetFiles(directory).Length == 0 && Directory.GetDirectories(directory).Length == 0) + { + Directory.Delete(directory, false); + } + } + catch + { + } + } +} diff --git a/Assets/scripts/_runtimecache/LegacyPlainSaveMigrator.cs.meta b/Assets/scripts/_runtimecache/LegacyPlainSaveMigrator.cs.meta new file mode 100644 index 00000000..fe1278ae --- /dev/null +++ b/Assets/scripts/_runtimecache/LegacyPlainSaveMigrator.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: f29bda46e3dc3ae4d9bf7aa6c11bcadd \ No newline at end of file diff --git a/Assets/scripts/_runtimecache/RecentPlayHistoryModels.cs b/Assets/scripts/_runtimecache/RecentPlayHistoryModels.cs new file mode 100644 index 00000000..afe1b5e2 --- /dev/null +++ b/Assets/scripts/_runtimecache/RecentPlayHistoryModels.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; + +[Serializable] +public class RecentPlayRecord +{ + public string playedAt; + public int songID; + public string songName; + public string difficultyDisplay; + public float accuracy; + public float srks; + public int totalScore; + public bool scoreReadable; + public bool wasEarlySettlement; + public bool wasAllPerfect; +} + +[Serializable] +public class RecentPlayHistoryPayload +{ + public List records = new List(); +} diff --git a/Assets/scripts/_runtimecache/RecentPlayHistoryModels.cs.meta b/Assets/scripts/_runtimecache/RecentPlayHistoryModels.cs.meta new file mode 100644 index 00000000..5721fe60 --- /dev/null +++ b/Assets/scripts/_runtimecache/RecentPlayHistoryModels.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: f13cbff8f75ffe64aa2aed4e7cff0609 \ No newline at end of file diff --git a/Assets/scripts/_runtimecache/RecentPlayHistoryStore.cs b/Assets/scripts/_runtimecache/RecentPlayHistoryStore.cs new file mode 100644 index 00000000..7169b249 --- /dev/null +++ b/Assets/scripts/_runtimecache/RecentPlayHistoryStore.cs @@ -0,0 +1,57 @@ +using System.Collections.Generic; +using UnityEngine; + +public static class RecentPlayHistoryStore +{ + private const string Category = "recent_play_history"; + private const string Key = "runs_v1"; + private const int MaxRecordCount = 100; + + public static IReadOnlyList GetRecords() + { + return LoadPayload().records; + } + + public static void Push(RecentPlayRecord record) + { + if (record == null) + { + return; + } + + var payload = LoadPayload(); + if (payload.records == null) + { + payload.records = new List(); + } + + payload.records.Insert(0, record); + if (payload.records.Count > MaxRecordCount) + { + payload.records.RemoveRange(MaxRecordCount, payload.records.Count - MaxRecordCount); + } + + SecureSaveVault.SaveJson(Category, Key, payload); + } + + public static void Clear() + { + SecureSaveVault.Delete(Category, Key); + } + + private static RecentPlayHistoryPayload LoadPayload() + { + RecentPlayHistoryPayload payload; + if (!SecureSaveVault.TryLoadJson(Category, Key, out payload) || payload == null) + { + payload = new RecentPlayHistoryPayload(); + } + + if (payload.records == null) + { + payload.records = new List(); + } + + return payload; + } +} diff --git a/Assets/scripts/_runtimecache/RecentPlayHistoryStore.cs.meta b/Assets/scripts/_runtimecache/RecentPlayHistoryStore.cs.meta new file mode 100644 index 00000000..781a7ed9 --- /dev/null +++ b/Assets/scripts/_runtimecache/RecentPlayHistoryStore.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 68da4f91f4d88174fb8da3ea658c1672 \ No newline at end of file diff --git a/Assets/scripts/_runtimecache/SecureSaveVault.cs b/Assets/scripts/_runtimecache/SecureSaveVault.cs new file mode 100644 index 00000000..c3981f8b --- /dev/null +++ b/Assets/scripts/_runtimecache/SecureSaveVault.cs @@ -0,0 +1,555 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Security.Cryptography; +using System.Reflection; +using System.Text; +using UnityEngine; + +[Serializable] +public class SecureSaveEnvelope +{ + public int version; + public string payload; + public string signature; + public long savedUtcTicks; +} + +public static class SecureSaveVault +{ + private const string SecretSeed = "ban_total.secure_save_v2"; + private const string VaultDirectoryName = ".cache_bridge"; + private static bool s_dpapiInitialized; + private static bool s_dpapiSupported; + private static MethodInfo s_dpapiProtectMethod; + private static MethodInfo s_dpapiUnprotectMethod; + private static object s_dpapiCurrentUserScope; + + private static string VaultDirectoryPath + { + get { return Path.Combine(Application.persistentDataPath, VaultDirectoryName); } + } + + public static bool SaveJson(string category, string key, T data, string legacyPlainPath = null) + { + if (!typeof(T).IsValueType && (object)data == null) + { + return false; + } + + string json = JsonUtility.ToJson(data, false); + return SaveRawJson(category, key, json, legacyPlainPath); + } + + public static bool TryLoadJson(string category, string key, out T data, string legacyPlainPath = null) + { + data = default(T); + string json; + if (!TryLoadRawJson(category, key, out json, legacyPlainPath)) + { + return false; + } + + if (string.IsNullOrEmpty(json)) + { + return false; + } + + try + { + data = JsonUtility.FromJson(json); + if (typeof(T).IsValueType) + { + return true; + } + + return (object)data != null; + } + catch (Exception ex) + { + Debug.LogWarning($"[SecureSaveVault] JSON parse failed: {ex.Message}"); + data = default(T); + return false; + } + } + + public static bool SaveRawJson(string category, string key, string json, string legacyPlainPath = null) + { + if (string.IsNullOrWhiteSpace(category) || string.IsNullOrWhiteSpace(key) || json == null) + { + return false; + } + + string mainPath = GetFilePath(category, key, ".dat"); + string backupPath = GetFilePath(category, key, ".bak"); + string tempPath = GetFilePath(category, key, ".tmp"); + + try + { + string directory = Path.GetDirectoryName(mainPath); + Directory.CreateDirectory(directory); + TryHidePath(directory); + + string envelopeJson = BuildEnvelopeJson(category, key, json); + File.WriteAllText(tempPath, envelopeJson, Encoding.UTF8); + TryHidePath(tempPath); + + if (File.Exists(mainPath)) + { + File.Copy(mainPath, backupPath, true); + TryHidePath(backupPath); + } + + File.Copy(tempPath, mainPath, true); + TryHidePath(mainPath); + File.Delete(tempPath); + DeleteLegacyPlainFile(legacyPlainPath); + return true; + } + catch (Exception ex) + { + Debug.LogWarning($"[SecureSaveVault] Save failed ({category}/{key}): {ex.Message}"); + return false; + } + } + + public static bool TryLoadRawJson(string category, string key, out string json, string legacyPlainPath = null) + { + json = null; + if (string.IsNullOrWhiteSpace(category) || string.IsNullOrWhiteSpace(key)) + { + return false; + } + + string mainPath = GetFilePath(category, key, ".dat"); + string backupPath = GetFilePath(category, key, ".bak"); + + if (TryReadEncryptedFile(category, key, mainPath, out json)) + { + return true; + } + + if (TryReadEncryptedFile(category, key, backupPath, out json)) + { + SaveRawJson(category, key, json, legacyPlainPath); + return true; + } + + if (!string.IsNullOrEmpty(legacyPlainPath) && File.Exists(legacyPlainPath)) + { + try + { + json = File.ReadAllText(legacyPlainPath, Encoding.UTF8); + if (!string.IsNullOrEmpty(json)) + { + SaveRawJson(category, key, json, legacyPlainPath); + return true; + } + } + catch (Exception ex) + { + Debug.LogWarning($"[SecureSaveVault] Legacy migration failed ({legacyPlainPath}): {ex.Message}"); + } + } + + return false; + } + + public static bool Delete(string category, string key, string legacyPlainPath = null) + { + try + { + DeleteIfExists(GetFilePath(category, key, ".dat")); + DeleteIfExists(GetFilePath(category, key, ".bak")); + DeleteIfExists(GetFilePath(category, key, ".tmp")); + DeleteLegacyPlainFile(legacyPlainPath); + return true; + } + catch (Exception ex) + { + Debug.LogWarning($"[SecureSaveVault] Delete failed ({category}/{key}): {ex.Message}"); + return false; + } + } + + public static List LoadAllRawJson(string category, string legacyDirectory = null, string legacySearchPattern = "*.json") + { + var result = new List(); + if (string.IsNullOrWhiteSpace(category)) + { + return result; + } + + string categoryDirectory = GetCategoryDirectory(category); + if (Directory.Exists(categoryDirectory)) + { + string[] encryptedFiles = Directory.GetFiles(categoryDirectory, "*.dat", SearchOption.TopDirectoryOnly); + for (int i = 0; i < encryptedFiles.Length; i++) + { + string path = encryptedFiles[i]; + string key = ExtractKeyFromFileName(path); + if (string.IsNullOrEmpty(key)) + { + continue; + } + + string json; + if (TryReadEncryptedFile(category, key, path, out json) && !string.IsNullOrEmpty(json)) + { + result.Add(json); + } + } + } + + if (!string.IsNullOrEmpty(legacyDirectory) && Directory.Exists(legacyDirectory)) + { + string[] legacyFiles = Directory.GetFiles(legacyDirectory, legacySearchPattern, SearchOption.TopDirectoryOnly); + for (int i = 0; i < legacyFiles.Length; i++) + { + string legacyPath = legacyFiles[i]; + try + { + string json = File.ReadAllText(legacyPath, Encoding.UTF8); + if (string.IsNullOrEmpty(json)) + { + continue; + } + + string legacyKey = Path.GetFileNameWithoutExtension(legacyPath); + SaveRawJson(category, legacyKey, json, legacyPath); + result.Add(json); + } + catch (Exception ex) + { + Debug.LogWarning($"[SecureSaveVault] Legacy bulk migration failed ({legacyPath}): {ex.Message}"); + } + } + } + + return result; + } + + public static int CountEncryptedFiles(string category) + { + if (string.IsNullOrWhiteSpace(category)) + { + return 0; + } + + string categoryDirectory = GetCategoryDirectory(category); + if (!Directory.Exists(categoryDirectory)) + { + return 0; + } + + return Directory.GetFiles(categoryDirectory, "*.dat", SearchOption.TopDirectoryOnly).Length; + } + + private static bool TryReadEncryptedFile(string category, string key, string filePath, out string json) + { + json = null; + if (!File.Exists(filePath)) + { + return false; + } + + try + { + string envelopeJson = File.ReadAllText(filePath, Encoding.UTF8); + var envelope = JsonUtility.FromJson(envelopeJson); + if (envelope == null || string.IsNullOrEmpty(envelope.payload) || string.IsNullOrEmpty(envelope.signature)) + { + return false; + } + + string expectedSignature = ComputeSignature(category, envelope.payload); + if (!string.Equals(expectedSignature, envelope.signature, StringComparison.Ordinal)) + { + Debug.LogWarning($"[SecureSaveVault] Signature mismatch ({category}/{key}). Possible tampering detected."); + return false; + } + + byte[] protectedBytes = Convert.FromBase64String(envelope.payload); + byte[] plainBytes; + if (!TryUnprotectBytes(category, key, protectedBytes, out plainBytes)) + { + return false; + } + + json = Encoding.UTF8.GetString(plainBytes); + return true; + } + catch (Exception ex) + { + Debug.LogWarning($"[SecureSaveVault] Read failed ({category}/{key}): {ex.Message}"); + return false; + } + } + + private static string BuildEnvelopeJson(string category, string key, string json) + { + byte[] plainBytes = Encoding.UTF8.GetBytes(json); + byte[] protectedBytes = ProtectBytes(category, key, plainBytes); + string payloadBase64 = Convert.ToBase64String(protectedBytes); + + var envelope = new SecureSaveEnvelope + { + version = 2, + payload = payloadBase64, + signature = ComputeSignature(category, payloadBase64), + savedUtcTicks = DateTime.UtcNow.Ticks + }; + + return JsonUtility.ToJson(envelope, false); + } + + private static string GetCategoryDirectory(string category) + { + string safeCategory = ShortHash("cat|" + category); + return Path.Combine(VaultDirectoryPath, "." + safeCategory); + } + + private static string GetFilePath(string category, string key, string extension) + { + string categoryDirectory = GetCategoryDirectory(category); + string safeKey = ShortHash("key|" + key); + return Path.Combine(categoryDirectory, "." + safeKey + extension); + } + + private static string ExtractKeyFromFileName(string path) + { + string fileName = Path.GetFileNameWithoutExtension(path); + if (string.IsNullOrEmpty(fileName)) + { + return null; + } + + return fileName.StartsWith(".") ? fileName.Substring(1) : fileName; + } + + private static string ComputeSignature(string category, string payloadBase64) + { + string signText = payloadBase64 + "|" + category + "|" + Application.identifier + "|" + SecretSeed + "|" + SystemInfo.deviceUniqueIdentifier; + using (var sha = SHA256.Create()) + { + byte[] hash = sha.ComputeHash(Encoding.UTF8.GetBytes(signText)); + return Convert.ToBase64String(hash); + } + } + + private static byte[] ProtectBytes(string category, string key, byte[] plainBytes) + { +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN + byte[] dpapiBytes; + if (TryProtectWithDpapi(category, plainBytes, out dpapiBytes)) + { + return dpapiBytes; + } +#endif + using (var aes = Aes.Create()) + { + aes.Mode = CipherMode.CBC; + aes.Padding = PaddingMode.PKCS7; + aes.Key = BuildAesKey(category, key); + aes.GenerateIV(); + using (var encryptor = aes.CreateEncryptor()) + { + byte[] cipherBytes = encryptor.TransformFinalBlock(plainBytes, 0, plainBytes.Length); + byte[] result = new byte[aes.IV.Length + cipherBytes.Length]; + Buffer.BlockCopy(aes.IV, 0, result, 0, aes.IV.Length); + Buffer.BlockCopy(cipherBytes, 0, result, aes.IV.Length, cipherBytes.Length); + return result; + } + } + } + + private static bool TryUnprotectBytes(string category, string key, byte[] protectedBytes, out byte[] plainBytes) + { + plainBytes = null; + try + { +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN + if (TryUnprotectWithDpapi(category, protectedBytes, out plainBytes)) + { + return plainBytes != null; + } +#endif + using (var aes = Aes.Create()) + { + aes.Mode = CipherMode.CBC; + aes.Padding = PaddingMode.PKCS7; + aes.Key = BuildAesKey(category, key); + int ivLength = aes.BlockSize / 8; + if (protectedBytes == null || protectedBytes.Length <= ivLength) + { + return false; + } + + byte[] iv = new byte[ivLength]; + byte[] cipher = new byte[protectedBytes.Length - ivLength]; + Buffer.BlockCopy(protectedBytes, 0, iv, 0, ivLength); + Buffer.BlockCopy(protectedBytes, ivLength, cipher, 0, cipher.Length); + aes.IV = iv; + using (var decryptor = aes.CreateDecryptor()) + { + plainBytes = decryptor.TransformFinalBlock(cipher, 0, cipher.Length); + return plainBytes != null; + } + } + } + catch (Exception ex) + { + Debug.LogWarning($"[SecureSaveVault] Decrypt failed ({category}/{key}): {ex.Message}"); + plainBytes = null; + return false; + } + } + +#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN + private static bool TryProtectWithDpapi(string category, byte[] plainBytes, out byte[] protectedBytes) + { + protectedBytes = null; + if (!EnsureDpapi()) + { + return false; + } + + try + { + protectedBytes = s_dpapiProtectMethod.Invoke(null, new object[] { plainBytes, BuildEntropy(category), s_dpapiCurrentUserScope }) as byte[]; + return protectedBytes != null && protectedBytes.Length > 0; + } + catch (Exception ex) + { + Debug.LogWarning($"[SecureSaveVault] DPAPI protect failed, fallback to AES: {ex.Message}"); + protectedBytes = null; + return false; + } + } + + private static bool TryUnprotectWithDpapi(string category, byte[] protectedBytes, out byte[] plainBytes) + { + plainBytes = null; + if (!EnsureDpapi()) + { + return false; + } + + try + { + plainBytes = s_dpapiUnprotectMethod.Invoke(null, new object[] { protectedBytes, BuildEntropy(category), s_dpapiCurrentUserScope }) as byte[]; + return plainBytes != null && plainBytes.Length > 0; + } + catch + { + plainBytes = null; + return false; + } + } + + private static bool EnsureDpapi() + { + if (s_dpapiInitialized) + { + return s_dpapiSupported; + } + + s_dpapiInitialized = true; + try + { + Type protectedDataType = + Type.GetType("System.Security.Cryptography.ProtectedData, System.Security.Cryptography.ProtectedData") ?? + Type.GetType("System.Security.Cryptography.ProtectedData, System.Security"); + Type scopeType = + Type.GetType("System.Security.Cryptography.DataProtectionScope, System.Security.Cryptography.ProtectedData") ?? + Type.GetType("System.Security.Cryptography.DataProtectionScope, System.Security"); + + if (protectedDataType == null || scopeType == null) + { + s_dpapiSupported = false; + return false; + } + + s_dpapiProtectMethod = protectedDataType.GetMethod("Protect", BindingFlags.Public | BindingFlags.Static, null, new[] { typeof(byte[]), typeof(byte[]), scopeType }, null); + s_dpapiUnprotectMethod = protectedDataType.GetMethod("Unprotect", BindingFlags.Public | BindingFlags.Static, null, new[] { typeof(byte[]), typeof(byte[]), scopeType }, null); + + if (s_dpapiProtectMethod == null || s_dpapiUnprotectMethod == null) + { + s_dpapiSupported = false; + return false; + } + + s_dpapiCurrentUserScope = Enum.Parse(scopeType, "CurrentUser"); + s_dpapiSupported = s_dpapiCurrentUserScope != null; + return s_dpapiSupported; + } + catch (Exception ex) + { + Debug.LogWarning($"[SecureSaveVault] DPAPI initialize failed, fallback to AES: {ex.Message}"); + s_dpapiSupported = false; + return false; + } + } +#endif + + private static byte[] BuildEntropy(string category) + { + string seed = Application.identifier + "|" + SystemInfo.deviceUniqueIdentifier + "|" + SecretSeed + "|" + category; + using (var sha = SHA256.Create()) + { + return sha.ComputeHash(Encoding.UTF8.GetBytes(seed)); + } + } + + private static byte[] BuildAesKey(string category, string key) + { + return BuildEntropy(category); + } + + private static string ShortHash(string value) + { + using (var sha = SHA256.Create()) + { + byte[] hash = sha.ComputeHash(Encoding.UTF8.GetBytes(value + "|" + Application.identifier + "|" + SecretSeed)); + return BitConverter.ToString(hash, 0, 12).Replace("-", string.Empty).ToLowerInvariant(); + } + } + + private static void DeleteLegacyPlainFile(string legacyPlainPath) + { + if (string.IsNullOrEmpty(legacyPlainPath) || !File.Exists(legacyPlainPath)) + { + return; + } + + DeleteIfExists(legacyPlainPath); + } + + private static void DeleteIfExists(string path) + { + if (!string.IsNullOrEmpty(path) && File.Exists(path)) + { + File.Delete(path); + } + } + + private static void TryHidePath(string path) + { + try + { + if (Application.platform != RuntimePlatform.WindowsEditor && Application.platform != RuntimePlatform.WindowsPlayer) + { + return; + } + + var attributes = File.GetAttributes(path); + if ((attributes & FileAttributes.Hidden) == 0) + { + File.SetAttributes(path, attributes | FileAttributes.Hidden); + } + } + catch + { + } + } +} diff --git a/Assets/scripts/_runtimecache/SecureSaveVault.cs.meta b/Assets/scripts/_runtimecache/SecureSaveVault.cs.meta new file mode 100644 index 00000000..5ad69575 --- /dev/null +++ b/Assets/scripts/_runtimecache/SecureSaveVault.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 79fb5f18bfcf1674993076d6b5e5bb9d \ No newline at end of file diff --git a/Assets/scripts/_runtimecache/StoreExpBottlePurchaseService.cs b/Assets/scripts/_runtimecache/StoreExpBottlePurchaseService.cs index 37e8c7e9..a848c184 100644 --- a/Assets/scripts/_runtimecache/StoreExpBottlePurchaseService.cs +++ b/Assets/scripts/_runtimecache/StoreExpBottlePurchaseService.cs @@ -32,6 +32,12 @@ public static class StoreExpBottlePurchaseService return false; } + if (RequiresSinglePurchase(itemSO) && packageCount > 1) + { + failureMessage = "该物品仅支持单份购买"; + return false; + } + if (itemSO.costRequirements == null || itemSO.costRequirements.Count == 0) { failureMessage = "不可购买"; @@ -45,13 +51,6 @@ public static class StoreExpBottlePurchaseService return false; } - ExpBottleKind kind; - if (!StoreExpBottleGrantResolver.TryResolve(itemSO, out kind)) - { - failureMessage = "当前仅支持经验瓶发放"; - return false; - } - long longGrantedCount = (long)Mathf.Max(1, itemSO.itemSinglePurchaseQty) * packageCount; if (longGrantedCount > int.MaxValue) { @@ -74,9 +73,13 @@ public static class StoreExpBottlePurchaseService } int totalCost = (int)totalCostLong; + if (!ValidateGrantTarget(itemSO, out failureMessage)) + { + return false; + } PlayerEconomyLedger.EnsureInstance().AttachPlayerData(playerData); - ExpBottleLedger.EnsureInstance().AttachPlayerData(playerData); + StoreOwnershipLedger.EnsureInstance().InitializeIfNeeded(); if (!PlayerEconomyLedger.EnsureInstance().HasEnoughCoins(totalCost)) { @@ -90,14 +93,95 @@ public static class StoreExpBottlePurchaseService return false; } - ExpBottleLedger.EnsureInstance().Add(kind, grantedCount); + if (!GrantPurchasedItem(playerData, itemSO, grantedCount, out failureMessage)) + { + PlayerEconomyLedger.EnsureInstance().AddCoins(totalCost); + return false; + } + DebugPurchaseSuccess(itemSO, totalCost, grantedCount); return true; } + private static bool RequiresSinglePurchase(storeItemSO itemSO) + { + if (itemSO == null) + { + return false; + } + + return itemSO.itemType == storeItemSO.ItemType.character + || itemSO.itemType == storeItemSO.ItemType.song + || itemSO.itemType == storeItemSO.ItemType.storyPassage; + } + + private static bool ValidateGrantTarget(storeItemSO itemSO, out string failureMessage) + { + failureMessage = string.Empty; + if (itemSO == null) + { + failureMessage = "商品数据丢失"; + return false; + } + + switch (itemSO.itemType) + { + case storeItemSO.ItemType.consumable: + ExpBottleKind bottleKind; + if (!StoreExpBottleGrantResolver.TryResolve(itemSO, out bottleKind)) + { + failureMessage = "当前仅支持经验瓶发放"; + return false; + } + return true; + + case storeItemSO.ItemType.character: + case storeItemSO.ItemType.song: + case storeItemSO.ItemType.storyPassage: + return StoreOwnershipLedger.EnsureInstance().TryGrantOwnershipPreview(itemSO, out failureMessage); + + default: + failureMessage = "当前未配置发放逻辑"; + return false; + } + } + + private static bool GrantPurchasedItem(Player_SO playerData, storeItemSO itemSO, int grantedCount, out string failureMessage) + { + failureMessage = string.Empty; + if (itemSO == null) + { + failureMessage = "商品数据丢失"; + return false; + } + + switch (itemSO.itemType) + { + case storeItemSO.ItemType.consumable: + ExpBottleKind bottleKind; + if (!StoreExpBottleGrantResolver.TryResolve(itemSO, out bottleKind)) + { + failureMessage = "当前仅支持经验瓶发放"; + return false; + } + + ExpBottleLedger.EnsureInstance().AttachPlayerData(playerData); + ExpBottleLedger.EnsureInstance().Add(bottleKind, grantedCount); + return true; + + case storeItemSO.ItemType.character: + case storeItemSO.ItemType.song: + case storeItemSO.ItemType.storyPassage: + return StoreOwnershipLedger.EnsureInstance().TryGrantOwnership(itemSO, out failureMessage); + + default: + failureMessage = "当前未配置发放逻辑"; + return false; + } + } + private static void DebugPurchaseSuccess(storeItemSO itemSO, int totalCost, int grantedCount) { - var snapshot = ExpBottleLedger.EnsureInstance().GetSnapshot(); var builder = new StringBuilder(); builder.Append("[StorePurchase] 已成功购买:"); builder.Append(itemSO != null ? itemSO.itemName : "未知物品"); @@ -105,6 +189,15 @@ public static class StoreExpBottlePurchaseService builder.Append(totalCost); builder.Append(" | 发放数量="); builder.Append(grantedCount); + + if (itemSO != null && itemSO.itemType != storeItemSO.ItemType.consumable) + { + builder.Append(" | 已写入OwnershipSave"); + Debug.Log(builder.ToString()); + return; + } + + var snapshot = ExpBottleLedger.EnsureInstance().GetSnapshot(); builder.Append(" | 经验瓶库存:"); bool appendedAny = false; diff --git a/Assets/scripts/_runtimecache/StoreOwnershipLedger.cs b/Assets/scripts/_runtimecache/StoreOwnershipLedger.cs new file mode 100644 index 00000000..dca02b1f --- /dev/null +++ b/Assets/scripts/_runtimecache/StoreOwnershipLedger.cs @@ -0,0 +1,656 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +public sealed class StoreOwnershipLedger : MonoBehaviour +{ + private const string RuntimeStoreItemResourcesPath = "so/storeSO"; + + public static StoreOwnershipLedger Instance { get; private set; } + + private readonly Dictionary entriesByItemId = new Dictionary(); + private readonly List cachedStoreItems = new List(); + private bool initialized; + + [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] + private static void Bootstrap() + { + EnsureInstance(); + } + + public static StoreOwnershipLedger EnsureInstance() + { + if (Instance != null) + { + return Instance; + } + + var host = new GameObject("__runtime_ownership_bridge"); + host.hideFlags = HideFlags.HideInHierarchy | HideFlags.HideInInspector; + DontDestroyOnLoad(host); + Instance = host.AddComponent(); + return Instance; + } + + private void Awake() + { + if (Instance != null && Instance != this) + { + Destroy(gameObject); + return; + } + + Instance = this; + DontDestroyOnLoad(gameObject); + InitializeIfNeeded(); + } + + private void OnApplicationPause(bool pauseStatus) + { + if (pauseStatus) + { + SaveNow(); + } + } + + private void OnApplicationQuit() + { + SaveNow(); + } + + public void InitializeIfNeeded() + { + if (initialized) + { + return; + } + + StoreOwnershipPayload payload; + StoreOwnershipStorage.TryLoad(out payload); + RebuildFromPayload(payload); + LoadStoreItems(); + SeedFromCurrentMirrorFlags(); + SyncAllMirrorFlags(); + initialized = true; + SaveNow(); + } + + public void ForceSyncMirrorFlags() + { + InitializeIfNeeded(); + LoadStoreItems(); + SyncAllMirrorFlags(); + } + + public bool IsOwned(storeItemSO itemSO) + { + InitializeIfNeeded(); + if (itemSO == null) + { + return false; + } + + StoreOwnershipEntry entry; + entriesByItemId.TryGetValue(itemSO.itemID, out entry); + + switch (itemSO.itemType) + { + case storeItemSO.ItemType.character: + return (entry != null && entry.owned) || (itemSO.associatedAllyHero != null && itemSO.associatedAllyHero.isUnlocked); + case storeItemSO.ItemType.song: + return (entry != null && entry.owned) || (itemSO.associatedSong != null && itemSO.associatedSong.isUnlocked); + case storeItemSO.ItemType.storyPassage: + return IsStoryGrantOwned(itemSO, entry); + default: + return false; + } + } + + public bool TryGrantOwnership(storeItemSO itemSO, out string failureMessage) + { + InitializeIfNeeded(); + failureMessage = string.Empty; + + if (!ValidateGrantTarget(itemSO, out failureMessage)) + { + return false; + } + + var entry = GetOrCreateEntry(itemSO.itemID); + switch (itemSO.itemType) + { + case storeItemSO.ItemType.character: + case storeItemSO.ItemType.song: + entry.owned = true; + break; + + case storeItemSO.ItemType.storyPassage: + GrantStoryOwnership(itemSO, entry); + break; + + default: + failureMessage = "当前未配置发放逻辑"; + return false; + } + + ApplyEntryToItem(itemSO, entry); + SaveNow(); + return true; + } + + public bool TryGrantOwnershipPreview(storeItemSO itemSO, out string failureMessage) + { + InitializeIfNeeded(); + return ValidateGrantTarget(itemSO, out failureMessage); + } + + public void SaveNow() + { + if (!initialized) + { + return; + } + + StoreOwnershipStorage.TrySave(CreatePayload()); + } + + private void RebuildFromPayload(StoreOwnershipPayload payload) + { + entriesByItemId.Clear(); + if (payload == null || payload.entries == null) + { + return; + } + + for (int i = 0; i < payload.entries.Count; i++) + { + var entry = payload.entries[i]; + if (entry == null) + { + continue; + } + + if (entry.unlockedStorySonIds == null) + { + entry.unlockedStorySonIds = new List(); + } + + entriesByItemId[entry.storeItemId] = entry; + } + } + + private StoreOwnershipPayload CreatePayload() + { + var payload = StoreOwnershipStorage.CreateDefaultPayload(); + foreach (var pair in entriesByItemId) + { + payload.entries.Add(CloneEntry(pair.Value)); + } + + return payload; + } + + private void LoadStoreItems() + { + cachedStoreItems.Clear(); + var loadedItems = Resources.LoadAll(RuntimeStoreItemResourcesPath); + var seen = new HashSet(); + for (int i = 0; i < loadedItems.Length; i++) + { + var item = loadedItems[i]; + if (item == null || !seen.Add(item.itemID)) + { + continue; + } + + cachedStoreItems.Add(item); + } + } + + private void SeedFromCurrentMirrorFlags() + { + bool changed = false; + for (int i = 0; i < cachedStoreItems.Count; i++) + { + var item = cachedStoreItems[i]; + if (item == null || entriesByItemId.ContainsKey(item.itemID)) + { + continue; + } + + StoreOwnershipEntry seededEntry = TrySeedEntry(item); + if (seededEntry == null) + { + continue; + } + + entriesByItemId[item.itemID] = seededEntry; + changed = true; + } + + if (changed) + { + SaveNow(); + } + } + + private StoreOwnershipEntry TrySeedEntry(storeItemSO itemSO) + { + if (itemSO == null) + { + return null; + } + + switch (itemSO.itemType) + { + case storeItemSO.ItemType.character: + if (itemSO.associatedAllyHero != null && itemSO.associatedAllyHero.isUnlocked) + { + return new StoreOwnershipEntry { storeItemId = itemSO.itemID, owned = true }; + } + break; + + case storeItemSO.ItemType.song: + if (itemSO.associatedSong != null && itemSO.associatedSong.isUnlocked) + { + return new StoreOwnershipEntry { storeItemId = itemSO.itemID, owned = true }; + } + break; + + case storeItemSO.ItemType.storyPassage: + return TrySeedStoryEntry(itemSO); + } + + return null; + } + + private StoreOwnershipEntry TrySeedStoryEntry(storeItemSO itemSO) + { + var story = itemSO != null ? itemSO.associatedStoryPassage : null; + if (story == null) + { + return null; + } + + var entry = new StoreOwnershipEntry { storeItemId = itemSO.itemID }; + switch (itemSO.storyPassageGrantMode) + { + case storeItemSO.StoryPassageGrantMode.fatherOnly: + entry.owned = story.isUnlocked; + break; + + case storeItemSO.StoryPassageGrantMode.specificSonOnly: + if (HasStorySonUnlocked(story, itemSO.associatedStorySonId)) + { + entry.unlockedStorySonIds.Add(itemSO.associatedStorySonId); + } + break; + + case storeItemSO.StoryPassageGrantMode.fatherAndSpecificSon: + if (story.isUnlocked || HasStorySonUnlocked(story, itemSO.associatedStorySonId)) + { + entry.owned = true; + if (itemSO.associatedStorySonId >= 0) + { + entry.unlockedStorySonIds.Add(itemSO.associatedStorySonId); + } + } + break; + + case storeItemSO.StoryPassageGrantMode.allSons: + if (story.isUnlocked || AreAllStorySonsUnlocked(story)) + { + entry.owned = true; + AddAllStorySonIds(story, entry.unlockedStorySonIds); + } + break; + } + + return entry.owned || entry.unlockedStorySonIds.Count > 0 ? entry : null; + } + + private void SyncAllMirrorFlags() + { + for (int i = 0; i < cachedStoreItems.Count; i++) + { + var item = cachedStoreItems[i]; + if (item == null) + { + continue; + } + + StoreOwnershipEntry entry; + if (!entriesByItemId.TryGetValue(item.itemID, out entry)) + { + continue; + } + + ApplyEntryToItem(item, entry); + } + } + + private bool ValidateGrantTarget(storeItemSO itemSO, out string failureMessage) + { + failureMessage = string.Empty; + if (itemSO == null) + { + failureMessage = "商品数据丢失"; + return false; + } + + if (IsOwned(itemSO)) + { + failureMessage = "物品已解锁"; + return false; + } + + switch (itemSO.itemType) + { + case storeItemSO.ItemType.character: + if (itemSO.associatedAllyHero == null) + { + failureMessage = "角色数据未配置"; + return false; + } + return true; + + case storeItemSO.ItemType.song: + if (itemSO.associatedSong == null) + { + failureMessage = "歌曲数据未配置"; + return false; + } + return true; + + case storeItemSO.ItemType.storyPassage: + if (itemSO.associatedStoryPassage == null) + { + failureMessage = "剧情数据未配置"; + return false; + } + + if (RequiresSpecificStorySon(itemSO.storyPassageGrantMode)) + { + if (itemSO.associatedStorySonId < 0 || FindStorySonIndex(itemSO.associatedStoryPassage, itemSO.associatedStorySonId) < 0) + { + failureMessage = "剧情子章节未配置"; + return false; + } + } + return true; + + default: + failureMessage = "当前未配置发放逻辑"; + return false; + } + } + + private void GrantStoryOwnership(storeItemSO itemSO, StoreOwnershipEntry entry) + { + if (entry.unlockedStorySonIds == null) + { + entry.unlockedStorySonIds = new List(); + } + + switch (itemSO.storyPassageGrantMode) + { + case storeItemSO.StoryPassageGrantMode.fatherOnly: + entry.owned = true; + break; + + case storeItemSO.StoryPassageGrantMode.specificSonOnly: + AddStorySonId(entry.unlockedStorySonIds, itemSO.associatedStorySonId); + break; + + case storeItemSO.StoryPassageGrantMode.fatherAndSpecificSon: + entry.owned = true; + AddStorySonId(entry.unlockedStorySonIds, itemSO.associatedStorySonId); + break; + + case storeItemSO.StoryPassageGrantMode.allSons: + entry.owned = true; + AddAllStorySonIds(itemSO.associatedStoryPassage, entry.unlockedStorySonIds); + break; + } + } + + private void ApplyEntryToItem(storeItemSO itemSO, StoreOwnershipEntry entry) + { + if (itemSO == null || entry == null) + { + return; + } + + switch (itemSO.itemType) + { + case storeItemSO.ItemType.character: + if (entry.owned && itemSO.associatedAllyHero != null) + { + itemSO.associatedAllyHero.isUnlocked = true; + MarkDirty(itemSO.associatedAllyHero); + } + break; + + case storeItemSO.ItemType.song: + if (entry.owned && itemSO.associatedSong != null) + { + itemSO.associatedSong.isUnlocked = true; + MarkDirty(itemSO.associatedSong); + } + break; + + case storeItemSO.ItemType.storyPassage: + ApplyStoryEntry(itemSO.associatedStoryPassage, entry); + break; + } + } + + private void ApplyStoryEntry(notebook_faterType story, StoreOwnershipEntry entry) + { + if (story == null || entry == null) + { + return; + } + + if (entry.owned || (entry.unlockedStorySonIds != null && entry.unlockedStorySonIds.Count > 0)) + { + story.isUnlocked = true; + MarkDirty(story); + } + + if (entry.unlockedStorySonIds == null || story.sonList == null) + { + return; + } + + for (int i = 0; i < entry.unlockedStorySonIds.Count; i++) + { + int targetSonId = entry.unlockedStorySonIds[i]; + int sonIndex = FindStorySonIndex(story, targetSonId); + if (sonIndex < 0) + { + continue; + } + + story.sonList[sonIndex].son_isUnlocked = true; + MarkDirty(story); + } + } + + private bool IsStoryGrantOwned(storeItemSO itemSO, StoreOwnershipEntry entry) + { + if (itemSO == null || itemSO.associatedStoryPassage == null) + { + return false; + } + + switch (itemSO.storyPassageGrantMode) + { + case storeItemSO.StoryPassageGrantMode.fatherOnly: + return entry != null && entry.owned; + + case storeItemSO.StoryPassageGrantMode.specificSonOnly: + return HasEntryStorySon(entry, itemSO.associatedStorySonId) + || HasStorySonUnlocked(itemSO.associatedStoryPassage, itemSO.associatedStorySonId); + + case storeItemSO.StoryPassageGrantMode.fatherAndSpecificSon: + return (entry != null && entry.owned) + || HasEntryStorySon(entry, itemSO.associatedStorySonId) + || HasStorySonUnlocked(itemSO.associatedStoryPassage, itemSO.associatedStorySonId); + + case storeItemSO.StoryPassageGrantMode.allSons: + return (entry != null && entry.owned) || AreAllStorySonsUnlocked(itemSO.associatedStoryPassage); + + default: + return false; + } + } + + private static bool HasEntryStorySon(StoreOwnershipEntry entry, int sonId) + { + if (entry == null || entry.unlockedStorySonIds == null || sonId < 0) + { + return false; + } + + for (int i = 0; i < entry.unlockedStorySonIds.Count; i++) + { + if (entry.unlockedStorySonIds[i] == sonId) + { + return true; + } + } + + return false; + } + + private static bool HasStorySonUnlocked(notebook_faterType story, int sonId) + { + int index = FindStorySonIndex(story, sonId); + return index >= 0 && story.sonList[index].son_isUnlocked; + } + + private static bool AreAllStorySonsUnlocked(notebook_faterType story) + { + if (story == null || story.sonList == null || story.sonList.Count == 0) + { + return false; + } + + for (int i = 0; i < story.sonList.Count; i++) + { + var son = story.sonList[i]; + if (son == null || !son.son_isUnlocked) + { + return false; + } + } + + return true; + } + + private static int FindStorySonIndex(notebook_faterType story, int sonId) + { + if (story == null || story.sonList == null || sonId < 0) + { + return -1; + } + + for (int i = 0; i < story.sonList.Count; i++) + { + var son = story.sonList[i]; + if (son != null && son.son_id == sonId) + { + return i; + } + } + + return -1; + } + + private static bool RequiresSpecificStorySon(storeItemSO.StoryPassageGrantMode mode) + { + return mode == storeItemSO.StoryPassageGrantMode.specificSonOnly + || mode == storeItemSO.StoryPassageGrantMode.fatherAndSpecificSon; + } + + private static void AddStorySonId(List sonIds, int sonId) + { + if (sonIds == null || sonId < 0) + { + return; + } + + for (int i = 0; i < sonIds.Count; i++) + { + if (sonIds[i] == sonId) + { + return; + } + } + + sonIds.Add(sonId); + } + + private static void AddAllStorySonIds(notebook_faterType story, List sonIds) + { + if (story == null || story.sonList == null || sonIds == null) + { + return; + } + + for (int i = 0; i < story.sonList.Count; i++) + { + var son = story.sonList[i]; + if (son == null) + { + continue; + } + + AddStorySonId(sonIds, son.son_id); + } + } + + private StoreOwnershipEntry GetOrCreateEntry(int storeItemId) + { + StoreOwnershipEntry entry; + if (entriesByItemId.TryGetValue(storeItemId, out entry)) + { + return entry; + } + + entry = new StoreOwnershipEntry + { + storeItemId = storeItemId, + owned = false, + unlockedStorySonIds = new List() + }; + entriesByItemId[storeItemId] = entry; + return entry; + } + + private static StoreOwnershipEntry CloneEntry(StoreOwnershipEntry source) + { + return new StoreOwnershipEntry + { + storeItemId = source.storeItemId, + owned = source.owned, + unlockedStorySonIds = source.unlockedStorySonIds != null + ? new List(source.unlockedStorySonIds) + : new List() + }; + } + + private static void MarkDirty(UnityEngine.Object target) + { +#if UNITY_EDITOR + if (target != null) + { + EditorUtility.SetDirty(target); + } +#endif + } +} diff --git a/Assets/scripts/_runtimecache/StoreOwnershipLedger.cs.meta b/Assets/scripts/_runtimecache/StoreOwnershipLedger.cs.meta new file mode 100644 index 00000000..db1d5e6b --- /dev/null +++ b/Assets/scripts/_runtimecache/StoreOwnershipLedger.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 873f2d3326b8e9c42b3ad9757ef2b4b2 \ No newline at end of file diff --git a/Assets/scripts/_runtimecache/StoreOwnershipModels.cs b/Assets/scripts/_runtimecache/StoreOwnershipModels.cs new file mode 100644 index 00000000..8b3504ec --- /dev/null +++ b/Assets/scripts/_runtimecache/StoreOwnershipModels.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; + +[Serializable] +public class StoreOwnershipEntry +{ + public int storeItemId; + public bool owned; + public List unlockedStorySonIds = new List(); +} + +[Serializable] +public class StoreOwnershipPayload +{ + public int version; + public long lastUpdatedUtcTicks; + public List entries = new List(); +} + +[Serializable] +public class StoreOwnershipEnvelope +{ + public string payload; + public string signature; +} diff --git a/Assets/scripts/_runtimecache/StoreOwnershipModels.cs.meta b/Assets/scripts/_runtimecache/StoreOwnershipModels.cs.meta new file mode 100644 index 00000000..fdd37bbf --- /dev/null +++ b/Assets/scripts/_runtimecache/StoreOwnershipModels.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: df11f9fb00f4cb949ad6556e341680bc \ No newline at end of file diff --git a/Assets/scripts/_runtimecache/StoreOwnershipStorage.cs b/Assets/scripts/_runtimecache/StoreOwnershipStorage.cs new file mode 100644 index 00000000..92bfde10 --- /dev/null +++ b/Assets/scripts/_runtimecache/StoreOwnershipStorage.cs @@ -0,0 +1,202 @@ +using System; +using System.IO; +using System.Security.Cryptography; +using System.Text; +using UnityEngine; + +public static class StoreOwnershipStorage +{ + private const string SecretSeed = "ban_total.store_ownership.v1"; + private const string VaultDirectoryName = ".cache_bridge"; + private const string MainFileName = ".own.dat"; + private const string BackupFileName = ".own.bak"; + private const string TempFileName = ".own.tmp"; + + private static string VaultDirectoryPath + { + get { return Path.Combine(Application.persistentDataPath, VaultDirectoryName); } + } + + private static string MainFilePath + { + get { return Path.Combine(VaultDirectoryPath, MainFileName); } + } + + private static string BackupFilePath + { + get { return Path.Combine(VaultDirectoryPath, BackupFileName); } + } + + private static string TempFilePath + { + get { return Path.Combine(VaultDirectoryPath, TempFileName); } + } + + public static bool TryLoad(out StoreOwnershipPayload payload) + { + payload = CreateDefaultPayload(); + + if (TryReadPayload(MainFilePath, out payload)) + { + return true; + } + + if (TryReadPayload(BackupFilePath, out payload)) + { + TrySave(payload); + return true; + } + + return false; + } + + public static bool TrySave(StoreOwnershipPayload payload) + { + try + { + Directory.CreateDirectory(VaultDirectoryPath); + TryHidePath(VaultDirectoryPath); + + var envelopeJson = BuildEnvelopeJson(payload); + File.WriteAllText(TempFilePath, envelopeJson, Encoding.UTF8); + TryHidePath(TempFilePath); + + if (File.Exists(MainFilePath)) + { + File.Copy(MainFilePath, BackupFilePath, true); + TryHidePath(BackupFilePath); + } + + File.Copy(TempFilePath, MainFilePath, true); + TryHidePath(MainFilePath); + File.Delete(TempFilePath); + return true; + } + catch (Exception ex) + { + Debug.LogWarning($"[StoreOwnershipStorage] Save failed: {ex.Message}"); + return false; + } + } + + public static StoreOwnershipPayload CreateDefaultPayload() + { + return new StoreOwnershipPayload + { + version = 1, + lastUpdatedUtcTicks = DateTime.UtcNow.Ticks, + entries = new System.Collections.Generic.List() + }; + } + + private static bool TryReadPayload(string path, out StoreOwnershipPayload payload) + { + payload = CreateDefaultPayload(); + if (!File.Exists(path)) + { + return false; + } + + try + { + var envelopeJson = File.ReadAllText(path, Encoding.UTF8); + var envelope = JsonUtility.FromJson(envelopeJson); + if (envelope == null || string.IsNullOrEmpty(envelope.payload) || string.IsNullOrEmpty(envelope.signature)) + { + return false; + } + + var expectedSignature = ComputeSignature(envelope.payload); + if (!string.Equals(expectedSignature, envelope.signature, StringComparison.Ordinal)) + { + Debug.LogWarning("[StoreOwnershipStorage] Save signature mismatch. Possible tampering detected."); + return false; + } + + var encryptedBytes = Convert.FromBase64String(envelope.payload); + var plainBytes = XorTransform(encryptedBytes, BuildKeyBytes()); + var payloadJson = Encoding.UTF8.GetString(plainBytes); + var loadedPayload = JsonUtility.FromJson(payloadJson); + if (loadedPayload == null) + { + return false; + } + + payload = loadedPayload; + return true; + } + catch (Exception ex) + { + Debug.LogWarning($"[StoreOwnershipStorage] Load failed from '{path}': {ex.Message}"); + return false; + } + } + + private static string BuildEnvelopeJson(StoreOwnershipPayload payload) + { + payload.lastUpdatedUtcTicks = DateTime.UtcNow.Ticks; + var payloadJson = JsonUtility.ToJson(payload, false); + var plainBytes = Encoding.UTF8.GetBytes(payloadJson); + var encryptedBytes = XorTransform(plainBytes, BuildKeyBytes()); + var payloadBase64 = Convert.ToBase64String(encryptedBytes); + + var envelope = new StoreOwnershipEnvelope + { + payload = payloadBase64, + signature = ComputeSignature(payloadBase64) + }; + + return JsonUtility.ToJson(envelope, false); + } + + private static string ComputeSignature(string payloadBase64) + { + var signText = payloadBase64 + "|" + Application.identifier + "|" + SecretSeed + "|" + SystemInfo.deviceUniqueIdentifier; + using (var sha = SHA256.Create()) + { + var bytes = Encoding.UTF8.GetBytes(signText); + var hash = sha.ComputeHash(bytes); + return Convert.ToBase64String(hash); + } + } + + private static byte[] BuildKeyBytes() + { + using (var sha = SHA256.Create()) + { + var seed = Application.identifier + "|" + SystemInfo.deviceUniqueIdentifier + "|" + SecretSeed; + return sha.ComputeHash(Encoding.UTF8.GetBytes(seed)); + } + } + + private static byte[] XorTransform(byte[] source, byte[] key) + { + var result = new byte[source.Length]; + for (int i = 0; i < source.Length; i++) + { + result[i] = (byte)(source[i] ^ key[i % key.Length]); + } + + return result; + } + + private static void TryHidePath(string path) + { + try + { + if (Application.platform != RuntimePlatform.WindowsEditor && Application.platform != RuntimePlatform.WindowsPlayer) + { + return; + } + + var attributes = File.GetAttributes(path); + if ((attributes & FileAttributes.Hidden) == 0) + { + File.SetAttributes(path, attributes | FileAttributes.Hidden); + } + } + catch + { + } + } +} diff --git a/Assets/scripts/_runtimecache/StoreOwnershipStorage.cs.meta b/Assets/scripts/_runtimecache/StoreOwnershipStorage.cs.meta new file mode 100644 index 00000000..a18d09f9 --- /dev/null +++ b/Assets/scripts/_runtimecache/StoreOwnershipStorage.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 7f902609758920443b9df12a43213dd6 \ No newline at end of file diff --git a/Assets/scripts/dailyTask/DailyTaskEventHub.cs b/Assets/scripts/dailyTask/DailyTaskEventHub.cs index 19b4f34b..56aaf3e4 100644 --- a/Assets/scripts/dailyTask/DailyTaskEventHub.cs +++ b/Assets/scripts/dailyTask/DailyTaskEventHub.cs @@ -9,12 +9,13 @@ }); } - public static void ReportPlaySong() + public static void ReportPlaySong(int songID = 0) { DailyTaskService.EnsureInstance().ReportEvent(new DailyTaskEventData { taskType = userTasksPool.TaskType.PlaySong, - amount = 1f + amount = 1f, + songID = songID }); } @@ -36,6 +37,15 @@ }); } + public static void ReportWatchStory() + { + DailyTaskService.EnsureInstance().ReportEvent(new DailyTaskEventData + { + taskType = userTasksPool.TaskType.WatchStory, + amount = 1f + }); + } + public static void ReportUseItem(int amount) { DailyTaskService.EnsureInstance().ReportEvent(new DailyTaskEventData @@ -54,11 +64,29 @@ }); } - public static void ReportGameDuration(float durationSeconds) + public static void ReportSingleRunCombo(int combo) { DailyTaskService.EnsureInstance().ReportEvent(new DailyTaskEventData { - taskType = userTasksPool.TaskType.GameDuration, + taskType = userTasksPool.TaskType.SingleRunCombo, + amount = combo + }); + } + + public static void ReportSingleRunScore(float totalScore) + { + DailyTaskService.EnsureInstance().ReportEvent(new DailyTaskEventData + { + taskType = userTasksPool.TaskType.SingleRunScore, + amount = totalScore + }); + } + + public static void ReportOnlineDuration(float durationSeconds) + { + DailyTaskService.EnsureInstance().ReportEvent(new DailyTaskEventData + { + taskType = userTasksPool.TaskType.OnlineDuration, amount = durationSeconds }); } diff --git a/Assets/scripts/dailyTask/DailyTaskRuntimeModels.cs b/Assets/scripts/dailyTask/DailyTaskRuntimeModels.cs index a2c8555d..8bdddc02 100644 --- a/Assets/scripts/dailyTask/DailyTaskRuntimeModels.cs +++ b/Assets/scripts/dailyTask/DailyTaskRuntimeModels.cs @@ -14,15 +14,25 @@ public class DailyTaskRuntimeEntry public class DailyTaskSaveData { public string dateKey; + public int dateStamp; public int refreshUsedCount; + public int trustedDateStamp; + public int lastRefreshDateStamp; + public long lastRefreshLocalTicks; + public long lastRefreshUtcTicks; + public long lastSeenLocalTicks; + public long lastSeenUtcTicks; + public int timeRollbackDetections; public List activeTasks = new List(); public List accumulatedProgress = new List(); + public List uniqueIntProgress = new List(); } public struct DailyTaskEventData { public userTasksPool.TaskType taskType; public float amount; + public int songID; } [Serializable] @@ -32,6 +42,13 @@ public class DailyTaskAccumulatedProgress public float progress; } +[Serializable] +public class DailyTaskUniqueIntProgress +{ + public int taskType; + public List values = new List(); +} + public sealed class DailyTaskViewData { public userTasksPool.TaskDefinition definition; diff --git a/Assets/scripts/dailyTask/DailyTaskSaveService.cs b/Assets/scripts/dailyTask/DailyTaskSaveService.cs index b8421b8a..d7f34fcd 100644 --- a/Assets/scripts/dailyTask/DailyTaskSaveService.cs +++ b/Assets/scripts/dailyTask/DailyTaskSaveService.cs @@ -4,23 +4,25 @@ using UnityEngine; public static class DailyTaskSaveService { - private static string SaveFilePath + private const string SaveCategory = "daily_task"; + private const string SaveKey = "runtime"; + + private static string LegacySaveFilePath { get { return Path.Combine(Application.persistentDataPath, "daily_tasks.json"); } } public static DailyTaskSaveData Load() { - if (!File.Exists(SaveFilePath)) - { - return new DailyTaskSaveData(); - } - try { - var json = File.ReadAllText(SaveFilePath); - var data = JsonUtility.FromJson(json); - return data ?? new DailyTaskSaveData(); + DailyTaskSaveData data; + if (SecureSaveVault.TryLoadJson(SaveCategory, SaveKey, out data, LegacySaveFilePath)) + { + return data ?? new DailyTaskSaveData(); + } + + return new DailyTaskSaveData(); } catch (Exception ex) { @@ -38,8 +40,7 @@ public static class DailyTaskSaveService try { - var json = JsonUtility.ToJson(data, true); - File.WriteAllText(SaveFilePath, json); + SecureSaveVault.SaveJson(SaveCategory, SaveKey, data, LegacySaveFilePath); } catch (Exception ex) { diff --git a/Assets/scripts/dailyTask/DailyTaskService.cs b/Assets/scripts/dailyTask/DailyTaskService.cs index 37562085..4724d4d5 100644 --- a/Assets/scripts/dailyTask/DailyTaskService.cs +++ b/Assets/scripts/dailyTask/DailyTaskService.cs @@ -10,6 +10,14 @@ public sealed class DailyTaskService : MonoBehaviour public event Action OnTasksChanged; + private enum ProgressCombineMode + { + Sum, + Max + } + + private const float OnlineDurationFlushStepSeconds = 5f; + private readonly Queue pendingEvents = new Queue(); private readonly Dictionary definitionById = new Dictionary(StringComparer.Ordinal); @@ -18,6 +26,8 @@ public sealed class DailyTaskService : MonoBehaviour private int configuredTaskMaxSize = 5; private int configuredRefreshMaxTimes = 3; private bool initialized; + private bool appFocused = true; + private float pendingOnlineDurationSeconds; [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] private static void Bootstrap() @@ -54,10 +64,53 @@ public sealed class DailyTaskService : MonoBehaviour InitializeStorageIfNeeded(); } + private void Update() + { + if (!Application.isPlaying || !appFocused) + { + return; + } + + pendingOnlineDurationSeconds += Time.unscaledDeltaTime; + if (pendingOnlineDurationSeconds >= OnlineDurationFlushStepSeconds) + { + float flushSeconds = Mathf.Floor(pendingOnlineDurationSeconds); + pendingOnlineDurationSeconds = Mathf.Max(0f, pendingOnlineDurationSeconds - flushSeconds); + ReportEvent(new DailyTaskEventData + { + taskType = userTasksPool.TaskType.OnlineDuration, + amount = flushSeconds + }); + } + } + + private void OnApplicationFocus(bool hasFocus) + { + appFocused = hasFocus; + if (!hasFocus) + { + FlushPendingOnlineDuration(); + } + } + + private void OnApplicationPause(bool pauseStatus) + { + if (pauseStatus) + { + FlushPendingOnlineDuration(); + } + } + + private void OnApplicationQuit() + { + FlushPendingOnlineDuration(); + } + private void OnDestroy() { if (Instance == this) { + FlushPendingOnlineDuration(); SceneManager.sceneLoaded -= OnSceneLoaded; } } @@ -117,42 +170,39 @@ public sealed class DailyTaskService : MonoBehaviour } EnsureTodayTasks(); - float accumulatedIncrement = GetAccumulatedIncrement(eventData); - if (accumulatedIncrement <= 0f) + + bool changed = ApplyEventToTrackedProgress(eventData); + + if (saveData != null && saveData.activeTasks != null) { - return; - } - - float accumulatedValue = AddAccumulatedProgress(eventData.taskType, accumulatedIncrement); - - bool changed = false; - for (int i = 0; i < saveData.activeTasks.Count; i++) - { - var runtimeEntry = saveData.activeTasks[i]; - if (runtimeEntry == null || runtimeEntry.isClaimed) + for (int i = 0; i < saveData.activeTasks.Count; i++) { - continue; - } + var runtimeEntry = saveData.activeTasks[i]; + if (runtimeEntry == null || runtimeEntry.isClaimed) + { + continue; + } - userTasksPool.TaskDefinition definition; - if (!definitionById.TryGetValue(runtimeEntry.taskID, out definition)) - { - continue; - } + userTasksPool.TaskDefinition definition; + if (!definitionById.TryGetValue(runtimeEntry.taskID, out definition)) + { + continue; + } - if (!IsEventMatch(definition, eventData)) - { - continue; - } + if (!IsEventMatch(definition, eventData)) + { + continue; + } - float previousProgress = runtimeEntry.progress; - bool previousCompleted = runtimeEntry.isCompleted; - runtimeEntry.progress = GetInitialProgress(definition, accumulatedValue); - runtimeEntry.isCompleted = runtimeEntry.progress >= Mathf.Max(0.0001f, definition.targetValue); + float nextProgress = CalculateProgressForDefinition(definition); + bool nextCompleted = nextProgress >= Mathf.Max(0.0001f, definition.targetValue); - if (!Mathf.Approximately(previousProgress, runtimeEntry.progress) || previousCompleted != runtimeEntry.isCompleted) - { - changed = true; + if (!Mathf.Approximately(runtimeEntry.progress, nextProgress) || runtimeEntry.isCompleted != nextCompleted) + { + runtimeEntry.progress = nextProgress; + runtimeEntry.isCompleted = nextCompleted; + changed = true; + } } } @@ -177,6 +227,7 @@ public sealed class DailyTaskService : MonoBehaviour } saveData.refreshUsedCount += 1; + StampRefreshUsage(); GenerateDailyTasks(); Save(); NotifyTasksChanged(); @@ -278,11 +329,7 @@ public sealed class DailyTaskService : MonoBehaviour { if (string.Equals(scene.name, "UI_UI", StringComparison.OrdinalIgnoreCase)) { - ReportEvent(new DailyTaskEventData - { - taskType = userTasksPool.TaskType.Login, - amount = 1f - }); + DailyTaskEventHub.ReportLogin(); } } @@ -294,6 +341,7 @@ public sealed class DailyTaskService : MonoBehaviour } saveData = DailyTaskSaveService.Load() ?? new DailyTaskSaveData(); + EnsureRuntimeCollections(); initialized = true; } @@ -306,25 +354,36 @@ public sealed class DailyTaskService : MonoBehaviour return; } - string todayKey = GetTodayKey(); + bool timeStateChanged; + int effectiveTodayStamp = GetEffectiveTodayStamp(out timeStateChanged); + string todayKey = FormatDateKey(effectiveTodayStamp); if (saveData == null) { saveData = new DailyTaskSaveData(); } - bool needRegenerate = !string.Equals(saveData.dateKey, todayKey, StringComparison.Ordinal) + EnsureRuntimeCollections(); + + bool needRegenerate = saveData.dateStamp != effectiveTodayStamp + || !string.Equals(saveData.dateKey, todayKey, StringComparison.Ordinal) || saveData.activeTasks == null || saveData.activeTasks.Count == 0; if (!needRegenerate) { EnsureAccumulatedProgressCompatibility(); + if (timeStateChanged) + { + Save(); + } return; } saveData.dateKey = todayKey; + saveData.dateStamp = effectiveTodayStamp; saveData.refreshUsedCount = 0; saveData.accumulatedProgress = new List(); + saveData.uniqueIntProgress = new List(); GenerateDailyTasks(); Save(); } @@ -348,7 +407,8 @@ public sealed class DailyTaskService : MonoBehaviour } int pickCount = Mathf.Min(configuredTaskMaxSize, candidates.Count); - var random = new System.Random(unchecked(GetTodayKey().GetHashCode() + saveData.refreshUsedCount * 397)); + int dateSeed = saveData.dateStamp > 0 ? saveData.dateStamp : GetLocalDateStamp(DateTime.Now); + var random = new System.Random(unchecked(dateSeed + saveData.refreshUsedCount * 397)); var selectedDefinitions = new List(); while (selectedDefinitions.Count < pickCount && candidates.Count > 0) @@ -374,7 +434,7 @@ public sealed class DailyTaskService : MonoBehaviour for (int i = 0; i < selectedDefinitions.Count; i++) { var definition = selectedDefinitions[i]; - float currentProgress = GetInitialProgress(definition, GetAccumulatedProgress(definition.taskType)); + float currentProgress = CalculateProgressForDefinition(definition); saveData.activeTasks.Add(new DailyTaskRuntimeEntry { taskID = definition.taskID, @@ -415,15 +475,7 @@ public sealed class DailyTaskService : MonoBehaviour private void EnsureAccumulatedProgressCompatibility() { - if (saveData == null) - { - return; - } - - if (saveData.accumulatedProgress == null) - { - saveData.accumulatedProgress = new List(); - } + EnsureRuntimeCollections(); if (saveData.accumulatedProgress.Count > 0 || saveData.activeTasks == null || saveData.activeTasks.Count == 0) { @@ -445,8 +497,12 @@ public sealed class DailyTaskService : MonoBehaviour continue; } - AddAccumulatedProgress(definition.taskType, Mathf.Max(0f, runtimeEntry.progress)); - changed = true; + if (definition.taskType == userTasksPool.TaskType.DifferentSongs) + { + continue; + } + + changed |= AddOrCombineProgress(definition.taskType, Mathf.Max(0f, runtimeEntry.progress), GetCombineMode(definition.taskType)); } if (changed) @@ -468,23 +524,74 @@ public sealed class DailyTaskService : MonoBehaviour } } - private static bool IsEventMatch(userTasksPool.TaskDefinition definition, DailyTaskEventData eventData) + private bool ApplyEventToTrackedProgress(DailyTaskEventData eventData) { - return definition != null && definition.taskType == eventData.taskType; + switch (eventData.taskType) + { + case userTasksPool.TaskType.Login: + case userTasksPool.TaskType.PlaySong: + case userTasksPool.TaskType.FullCombo: + case userTasksPool.TaskType.WatchStory: + case userTasksPool.TaskType.UseItem: + case userTasksPool.TaskType.ShareGame: + { + bool changed = AddOrCombineProgress(eventData.taskType, Mathf.Max(1f, eventData.amount), ProgressCombineMode.Sum); + if (eventData.taskType == userTasksPool.TaskType.PlaySong && eventData.songID > 0) + { + changed |= AddUniqueIntValue(userTasksPool.TaskType.DifferentSongs, eventData.songID); + } + + return changed; + } + case userTasksPool.TaskType.TotalScore: + case userTasksPool.TaskType.SpendCoins: + case userTasksPool.TaskType.GameDuration: + case userTasksPool.TaskType.OnlineDuration: + return AddOrCombineProgress(eventData.taskType, Mathf.Max(0f, eventData.amount), ProgressCombineMode.Sum); + case userTasksPool.TaskType.SingleRunCombo: + case userTasksPool.TaskType.SingleRunScore: + return AddOrCombineProgress(eventData.taskType, Mathf.Max(0f, eventData.amount), ProgressCombineMode.Max); + default: + return false; + } } - private float AddAccumulatedProgress(userTasksPool.TaskType taskType, float amount) + private static bool IsEventMatch(userTasksPool.TaskDefinition definition, DailyTaskEventData eventData) { - if (saveData == null) + if (definition == null) { - saveData = new DailyTaskSaveData(); + return false; } - if (saveData.accumulatedProgress == null) + if (definition.taskType == eventData.taskType) { - saveData.accumulatedProgress = new List(); + return true; } + return definition.taskType == userTasksPool.TaskType.DifferentSongs && eventData.taskType == userTasksPool.TaskType.PlaySong; + } + + private float CalculateProgressForDefinition(userTasksPool.TaskDefinition definition) + { + if (definition == null) + { + return 0f; + } + + float targetValue = Mathf.Max(0.0001f, definition.targetValue); + switch (definition.taskType) + { + case userTasksPool.TaskType.DifferentSongs: + return Mathf.Min(GetUniqueIntCount(userTasksPool.TaskType.DifferentSongs), targetValue); + default: + return Mathf.Min(Mathf.Max(0f, GetAccumulatedProgress(definition.taskType)), targetValue); + } + } + + private bool AddOrCombineProgress(userTasksPool.TaskType taskType, float amount, ProgressCombineMode combineMode) + { + EnsureRuntimeCollections(); + int taskTypeValue = (int)taskType; for (int i = 0; i < saveData.accumulatedProgress.Count; i++) { @@ -494,17 +601,25 @@ public sealed class DailyTaskService : MonoBehaviour continue; } - entry.progress = Mathf.Max(0f, entry.progress + amount); - return entry.progress; + float nextValue = combineMode == ProgressCombineMode.Max + ? Mathf.Max(entry.progress, amount) + : Mathf.Max(0f, entry.progress + amount); + + if (Mathf.Approximately(entry.progress, nextValue)) + { + return false; + } + + entry.progress = nextValue; + return true; } - var newEntry = new DailyTaskAccumulatedProgress + saveData.accumulatedProgress.Add(new DailyTaskAccumulatedProgress { taskType = taskTypeValue, progress = Mathf.Max(0f, amount) - }; - saveData.accumulatedProgress.Add(newEntry); - return newEntry.progress; + }); + return true; } private float GetAccumulatedProgress(userTasksPool.TaskType taskType) @@ -529,14 +644,151 @@ public sealed class DailyTaskService : MonoBehaviour return 0f; } - private static float GetInitialProgress(userTasksPool.TaskDefinition definition, float accumulatedValue) + private bool AddUniqueIntValue(userTasksPool.TaskType taskType, int value) { - if (definition == null) + if (value <= 0) { - return 0f; + return false; } - return Mathf.Min(Mathf.Max(0f, accumulatedValue), Mathf.Max(0.0001f, definition.targetValue)); + EnsureRuntimeCollections(); + int taskTypeValue = (int)taskType; + for (int i = 0; i < saveData.uniqueIntProgress.Count; i++) + { + var entry = saveData.uniqueIntProgress[i]; + if (entry == null || entry.taskType != taskTypeValue) + { + continue; + } + + if (entry.values == null) + { + entry.values = new List(); + } + + if (entry.values.Contains(value)) + { + return false; + } + + entry.values.Add(value); + return true; + } + + saveData.uniqueIntProgress.Add(new DailyTaskUniqueIntProgress + { + taskType = taskTypeValue, + values = new List { value } + }); + return true; + } + + private int GetUniqueIntCount(userTasksPool.TaskType taskType) + { + if (saveData == null || saveData.uniqueIntProgress == null) + { + return 0; + } + + int taskTypeValue = (int)taskType; + for (int i = 0; i < saveData.uniqueIntProgress.Count; i++) + { + var entry = saveData.uniqueIntProgress[i]; + if (entry == null || entry.taskType != taskTypeValue || entry.values == null) + { + continue; + } + + return entry.values.Count; + } + + return 0; + } + + private static ProgressCombineMode GetCombineMode(userTasksPool.TaskType taskType) + { + switch (taskType) + { + case userTasksPool.TaskType.SingleRunCombo: + case userTasksPool.TaskType.SingleRunScore: + return ProgressCombineMode.Max; + default: + return ProgressCombineMode.Sum; + } + } + + private void EnsureRuntimeCollections() + { + if (saveData == null) + { + saveData = new DailyTaskSaveData(); + } + + if (saveData.activeTasks == null) + { + saveData.activeTasks = new List(); + } + + if (saveData.accumulatedProgress == null) + { + saveData.accumulatedProgress = new List(); + } + + if (saveData.uniqueIntProgress == null) + { + saveData.uniqueIntProgress = new List(); + } + } + + private int GetEffectiveTodayStamp(out bool stateChanged) + { + stateChanged = false; + if (saveData == null) + { + saveData = new DailyTaskSaveData(); + } + + int currentStamp = GetLocalDateStamp(DateTime.Now); + long nowLocalTicks = DateTime.Now.Ticks; + long nowUtcTicks = DateTime.UtcNow.Ticks; + + if (saveData.trustedDateStamp <= 0) + { + saveData.trustedDateStamp = currentStamp; + stateChanged = true; + } + else if (currentStamp < saveData.trustedDateStamp) + { + saveData.timeRollbackDetections += 1; + currentStamp = saveData.trustedDateStamp; + stateChanged = true; + } + else if (currentStamp > saveData.trustedDateStamp) + { + saveData.trustedDateStamp = currentStamp; + stateChanged = true; + } + + if (saveData.lastSeenLocalTicks != nowLocalTicks) + { + saveData.lastSeenLocalTicks = nowLocalTicks; + stateChanged = true; + } + + if (saveData.lastSeenUtcTicks != nowUtcTicks) + { + saveData.lastSeenUtcTicks = nowUtcTicks; + stateChanged = true; + } + + return Mathf.Max(currentStamp, saveData.trustedDateStamp); + } + + private void StampRefreshUsage() + { + saveData.lastRefreshDateStamp = saveData.dateStamp; + saveData.lastRefreshLocalTicks = DateTime.Now.Ticks; + saveData.lastRefreshUtcTicks = DateTime.UtcNow.Ticks; } private bool TryGetTaskPair(string taskID, out DailyTaskRuntimeEntry runtimeEntry, out userTasksPool.TaskDefinition definition) @@ -627,27 +879,33 @@ public sealed class DailyTaskService : MonoBehaviour } } - private static float GetAccumulatedIncrement(DailyTaskEventData eventData) + private void FlushPendingOnlineDuration() { - switch (eventData.taskType) + if (pendingOnlineDurationSeconds <= 0f) { - case userTasksPool.TaskType.TotalScore: - case userTasksPool.TaskType.SpendCoins: - case userTasksPool.TaskType.GameDuration: - return Mathf.Max(0f, eventData.amount); - case userTasksPool.TaskType.Login: - case userTasksPool.TaskType.PlaySong: - case userTasksPool.TaskType.FullCombo: - case userTasksPool.TaskType.UseItem: - return Mathf.Max(1f, eventData.amount); - default: - return Mathf.Max(0f, eventData.amount); + return; } + + float flushSeconds = pendingOnlineDurationSeconds; + pendingOnlineDurationSeconds = 0f; + ReportEvent(new DailyTaskEventData + { + taskType = userTasksPool.TaskType.OnlineDuration, + amount = flushSeconds + }); } - private static string GetTodayKey() + private static int GetLocalDateStamp(DateTime dateTime) { - return DateTime.Now.ToString("yyyy-MM-dd"); + return dateTime.Year * 10000 + dateTime.Month * 100 + dateTime.Day; + } + + private static string FormatDateKey(int dateStamp) + { + int year = dateStamp / 10000; + int month = (dateStamp / 100) % 100; + int day = dateStamp % 100; + return year.ToString("D4") + "-" + month.ToString("D2") + "-" + day.ToString("D2"); } private void Save() diff --git a/Assets/scripts/dailyTask/taskPool/10100_usertasks.asset b/Assets/scripts/dailyTask/taskPool/10100_usertasks.asset index 9bea3e55..63d5d23a 100644 --- a/Assets/scripts/dailyTask/taskPool/10100_usertasks.asset +++ b/Assets/scripts/dailyTask/taskPool/10100_usertasks.asset @@ -1,4 +1,4 @@ -%YAML 1.1 +%YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!114 &11400000 MonoBehaviour: @@ -14,78 +14,111 @@ MonoBehaviour: m_EditorClassIdentifier: tasks: - taskID: 10101 - description: "\u767B\u5F55\u6E38\u620Fv50" + description: 登录游戏 1 次 taskType: 0 refreshFrequency: 1 targetValue: 1 rewardType: 0 - rewardAmount: 50 + rewardAmount: 1 rewardExpBottleKind: 0 rewardDushMaterialKind: 0 addToTaskPool: 1 selectionWeight: 1 - taskID: 10102 - description: "\u5B8C\u62103\u9996\u6B4C\u66F2" + description: 完成任意歌曲 3 首 taskType: 1 refreshFrequency: 1 targetValue: 3 rewardType: 0 - rewardAmount: 0 + rewardAmount: 1 rewardExpBottleKind: 0 rewardDushMaterialKind: 0 addToTaskPool: 1 selectionWeight: 1 - taskID: 10103 - description: "\u8FBE\u62101\u6B21Full Combo" - taskType: 2 + description: 单局达到 99 连击 + taskType: 9 refreshFrequency: 1 - targetValue: 1 + targetValue: 99 rewardType: 0 - rewardAmount: 0 + rewardAmount: 1 rewardExpBottleKind: 0 rewardDushMaterialKind: 0 addToTaskPool: 1 selectionWeight: 1 - taskID: 10104 - description: "\u7D2F\u8BA1\u83B7\u5F971000000\u5206" - taskType: 3 + description: 单局总分达到 1000000 + taskType: 10 refreshFrequency: 1 targetValue: 1000000 - rewardType: 1 - rewardAmount: 4 + rewardType: 0 + rewardAmount: 1 rewardExpBottleKind: 0 rewardDushMaterialKind: 0 addToTaskPool: 1 selectionWeight: 1 - taskID: 10105 - description: "\u4F7F\u7528\u4EFB\u610F\u7C7B\u578B\u7ECF\u9A8C\u74F6\u4E00\u6B21" - taskType: 5 + description: 今日累计分数达到 10000000 + taskType: 3 refreshFrequency: 1 - targetValue: 1 + targetValue: 10000000 rewardType: 0 - rewardAmount: 0 + rewardAmount: 1 rewardExpBottleKind: 0 rewardDushMaterialKind: 0 addToTaskPool: 1 selectionWeight: 1 - taskID: 10106 - description: "\u82B1\u8D391000\u91D1\u5E01" - taskType: 7 + description: 阅读剧情 1 次 + taskType: 4 refreshFrequency: 1 - targetValue: 1000 + targetValue: 1 rewardType: 0 - rewardAmount: 0 + rewardAmount: 1 rewardExpBottleKind: 0 rewardDushMaterialKind: 0 addToTaskPool: 1 selectionWeight: 1 - taskID: 10107 - description: "\u6E38\u620F\u65F6\u957F\u8FBE\u523030\u5206\u949F" - taskType: 8 + description: 使用任意经验提升或突破材料 1 次 + taskType: 5 refreshFrequency: 1 - targetValue: 1800 + targetValue: 1 rewardType: 0 - rewardAmount: 0 + rewardAmount: 1 + rewardExpBottleKind: 0 + rewardDushMaterialKind: 0 + addToTaskPool: 1 + selectionWeight: 1 + - taskID: 10108 + description: 在线 15 分钟 + taskType: 11 + refreshFrequency: 1 + targetValue: 900 + rewardType: 0 + rewardAmount: 1 + rewardExpBottleKind: 0 + rewardDushMaterialKind: 0 + addToTaskPool: 1 + selectionWeight: 1 + - taskID: 10109 + description: 消费 2000 coins + taskType: 7 + refreshFrequency: 1 + targetValue: 2000 + rewardType: 0 + rewardAmount: 1 + rewardExpBottleKind: 0 + rewardDushMaterialKind: 0 + addToTaskPool: 1 + selectionWeight: 1 + - taskID: 10110 + description: 游玩 3 首不同的歌曲 + taskType: 12 + refreshFrequency: 1 + targetValue: 3 + rewardType: 0 + rewardAmount: 1 rewardExpBottleKind: 0 rewardDushMaterialKind: 0 addToTaskPool: 1 diff --git a/Assets/scripts/dailyTask/taskPool/userTasksPool.cs b/Assets/scripts/dailyTask/taskPool/userTasksPool.cs index 9ee6491e..0cb104f5 100644 --- a/Assets/scripts/dailyTask/taskPool/userTasksPool.cs +++ b/Assets/scripts/dailyTask/taskPool/userTasksPool.cs @@ -55,7 +55,11 @@ public class userTasksPool : ScriptableObject UseItem, ShareGame, SpendCoins, - GameDuration + GameDuration, + SingleRunCombo, + SingleRunScore, + OnlineDuration, + DifferentSongs } public enum RewardType diff --git a/Assets/scripts/gamePlay_gameplay/NoteSpawner.cs b/Assets/scripts/gamePlay_gameplay/NoteSpawner.cs index 7f7b9f5b..1707f8bd 100644 --- a/Assets/scripts/gamePlay_gameplay/NoteSpawner.cs +++ b/Assets/scripts/gamePlay_gameplay/NoteSpawner.cs @@ -111,6 +111,11 @@ public class NoteSpawner : MonoBehaviour // Guard to avoid double-trigger / deadlock private bool immediateSettlementTriggered = false; + public bool IsImmediateSettlementTriggered + { + get { return immediateSettlementTriggered; } + } + private void Awake() { // Load saved visual speed multiplier before any spawning logic uses it diff --git a/Assets/scripts/gamePlay_gameplay/settlementController.cs b/Assets/scripts/gamePlay_gameplay/settlementController.cs index aac6598e..81685442 100644 --- a/Assets/scripts/gamePlay_gameplay/settlementController.cs +++ b/Assets/scripts/gamePlay_gameplay/settlementController.cs @@ -149,6 +149,7 @@ public class settlementController : MonoBehaviour private Transform cachedIntroMvpTransform; private Vector3 cachedIntroMvpBaseLocalPos; private bool hasCachedIntroMvpBaseLocalPos; + private bool settlementHistoryRecorded; private void Awake() { @@ -183,6 +184,9 @@ public class settlementController : MonoBehaviour try { gameMusicMixer.SetFloat(lowpassParamName, 22000f); } catch { } } + + RegisterCurrentLineupDeployCount(); + settlementHistoryRecorded = false; } private void Update() @@ -243,6 +247,62 @@ public class settlementController : MonoBehaviour } } + private void RegisterCurrentLineupDeployCount() + { + HashSet uniqueHeroIds = new HashSet(); + AllyHero_SO[] allHeroes = null; + + if (teamUIController.Instance != null && teamUIController.Instance.allySlotIds != null) + { + for (int i = 0; i < teamUIController.Instance.allySlotIds.Count; i++) + { + int heroId = teamUIController.Instance.allySlotIds[i]; + if (heroId > 0) + { + uniqueHeroIds.Add(heroId); + } + } + } + + if (uniqueHeroIds.Count == 0) + { + for (int slotIndex = 1; slotIndex <= 5; slotIndex++) + { + int heroId = PlayerPrefs.GetInt("selected_heroSlot0" + slotIndex + "_heroID", 0); + if (heroId > 0) + { + uniqueHeroIds.Add(heroId); + } + } + } + + if (uniqueHeroIds.Count == 0) + { + return; + } + + allHeroes = Resources.LoadAll(string.Empty); + if (allHeroes == null || allHeroes.Length == 0) + { + return; + } + + foreach (int heroId in uniqueHeroIds) + { + for (int i = 0; i < allHeroes.Length; i++) + { + AllyHero_SO hero = allHeroes[i]; + if (hero == null || hero.ally_heroID != heroId) + { + continue; + } + + hero.IncrementBattleDeployCount(); + break; + } + } + } + public void startSettlement_uiUpdate() { if (settlementUiInitialized) @@ -251,6 +311,7 @@ public class settlementController : MonoBehaviour return; } settlementUiInitialized = true; + settlementHistoryRecorded = false; // Documentation text normalized. InitializeSettlementCanvas(); @@ -317,19 +378,23 @@ public class settlementController : MonoBehaviour if (!GameConfig.autoPlayEnabled) { - DailyTaskEventHub.ReportPlaySong(); + DailyTaskEventHub.ReportPlaySong(thisSong_so != null ? thisSong_so.songID : 0); DailyTaskEventHub.ReportTotalScore(targetTotalScore); + DailyTaskEventHub.ReportSingleRunScore(targetTotalScore); + + if (InGamePerformanceManager.Instance != null && InGamePerformanceManager.Instance.HighestComboThisRun > 0) + { + DailyTaskEventHub.ReportSingleRunCombo(InGamePerformanceManager.Instance.HighestComboThisRun); + } + if (targetMissCount <= 0 && noteCountRaw > 0) { DailyTaskEventHub.ReportFullCombo(); } - - if (sessionDurationForTasks > 0f) - { - DailyTaskEventHub.ReportGameDuration(sessionDurationForTasks); - } } + TryRecordRecentPlayHistory(noteCountRaw); + perfectHitCount_Text.text = targetPerfectCount.ToString(); greatHitCount_Text.text = targetGreatCount.ToString(); goodHitCount_Text.text = targetGoodCount.ToString(); @@ -460,6 +525,127 @@ public class settlementController : MonoBehaviour StartSettlementIntro(); } + private void TryRecordRecentPlayHistory(int noteCountRaw) + { + if (settlementHistoryRecorded) + { + return; + } + + settlementHistoryRecorded = true; + + var record = new RecentPlayRecord + { + playedAt = System.DateTime.Now.ToString("MM-dd, HH:mm"), + songID = thisSong_so != null ? thisSong_so.songID : 0, + songName = thisSong_so != null && !string.IsNullOrWhiteSpace(thisSong_so.songName) + ? thisSong_so.songName + : (bmm != null ? bmm.parsedTitle : "Unknown"), + difficultyDisplay = BuildDifficultyDisplay(), + accuracy = targetAccuracyPercent, + srks = CalculateSongRankingScore(noteCountRaw), + totalScore = targetTotalScore, + scoreReadable = true, + wasEarlySettlement = IsEarlySettlement(noteCountRaw), + wasAllPerfect = IsAllPerfectRun(noteCountRaw) + }; + + RecentPlayHistoryStore.Push(record); + } + + private string BuildDifficultyDisplay() + { + int difficulty = bmm != null ? bmm.assignedDifficulty : -1; + string suffix = GetDifficultyShortName(difficulty); + float level = 0f; + + if (thisSong_so != null && thisSong_so.chartFiles != null) + { + for (int i = 0; i < thisSong_so.chartFiles.Count; i++) + { + ChartFileEntry entry = thisSong_so.chartFiles[i]; + if (entry == null || entry.difficulty != difficulty) + { + continue; + } + + level = entry.difficultyLEVEL; + break; + } + } + + string levelText = Mathf.Approximately(level, Mathf.Round(level)) + ? Mathf.RoundToInt(level).ToString() + : level.ToString("0.#"); + + if (string.IsNullOrEmpty(levelText) || levelText == "0") + { + return suffix; + } + + return levelText + "_" + suffix; + } + + private static string GetDifficultyShortName(int difficulty) + { + switch (difficulty) + { + case 0: return "EZ"; + case 1: return "HD"; + case 2: return "IN"; + case 3: return "IM"; + default: return "UN"; + } + } + + private float CalculateSongRankingScore(int noteCountRaw) + { + int totalNotes = Mathf.Max(1, noteCountRaw); + float accuracyScore = Mathf.Clamp01(targetAccuracyPercent / 100f); + float scoreScore = Mathf.Clamp01((float)targetTotalScore / Mathf.Max(1, _1000000)); + int highestCombo = InGamePerformanceManager.Instance != null ? InGamePerformanceManager.Instance.HighestComboThisRun : 0; + float comboScore = Mathf.Clamp01((float)highestCombo / totalNotes); + float judgementScore = Mathf.Clamp01( + (targetPerfectCount + targetGreatCount * 0.7f + targetGoodCount * 0.35f) / totalNotes); + float missPenalty = Mathf.Clamp01((float)targetMissCount / totalNotes); + + float srks = + accuracyScore * 42f + + scoreScore * 28f + + comboScore * 18f + + judgementScore * 12f; + + srks -= missPenalty * 18f; + + if (targetMissCount <= 0 && totalNotes > 0) + { + srks += 4f; + } + + return Mathf.Clamp(srks, 0f, 100f); + } + + private bool IsEarlySettlement(int noteCountRaw) + { + NoteSpawner spawner = FindAnyObjectByType(); + if (spawner != null && spawner.IsImmediateSettlementTriggered) + { + return true; + } + + int parsedNoteAmount = bmm != null ? bmm.parsedNoteAmount : 0; + return parsedNoteAmount > 0 && noteCountRaw < parsedNoteAmount; + } + + private bool IsAllPerfectRun(int noteCountRaw) + { + return noteCountRaw > 0 && + targetPerfectCount >= noteCountRaw && + targetGreatCount == 0 && + targetGoodCount == 0 && + targetMissCount == 0; + } + private void StartSettlementIntro() { skipIntroRequested = false; diff --git a/Assets/songsDatabase/SongData.cs b/Assets/songsDatabase/SongData.cs index 81218b4e..7e1c036c 100644 --- a/Assets/songsDatabase/SongData.cs +++ b/Assets/songsDatabase/SongData.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using UnityEngine; @@ -58,9 +58,11 @@ public class ChartFileEntry [CreateAssetMenu(fileName = "NewSongData", menuName = "EaseOut/SongData")] public class SongData : ScriptableObject { + private const string SecureSaveCategory = "song_runtime"; public string usernameID = "user_TestUser@FloatGaming"; public string songName; public int songID; + public bool isUnlocked; public int songLength_second; public string artistName; public string painter; @@ -289,7 +291,7 @@ public class SongData : ScriptableObject if (chartFileMap == null) chartFileMap = new Dictionary(); if (chartFiles == null) chartFiles = new List(); - // 尝试从持久化存储加载数据 + // 灏濊瘯浠庢寔涔呭寲瀛樺偍鍔犺浇鏁版嵁 LoadPersistent(); SyncRecordsFromChartFiles(); @@ -317,8 +319,7 @@ public class SongData : ScriptableObject } /// - /// 将数据保存到持久化存储,并附加 MD5 校验和防止篡改。 - /// + /// 灏嗘暟鎹繚瀛樺埌鎸佷箙鍖栧瓨鍌紝骞堕檮鍔?MD5 鏍¢獙鍜岄槻姝㈢鏀广€? /// public void SavePersistent() { if (songID == 0) @@ -328,28 +329,23 @@ public class SongData : ScriptableObject try { - // 在保存前确保 chartFiles 已同步,这样在编辑器中查看 SO 时数据也是最新的 + // 鍦ㄤ繚瀛樺墠纭繚 chartFiles 宸插悓姝ワ紝杩欐牱鍦ㄧ紪杈戝櫒涓煡鐪?SO 鏃舵暟鎹篃鏄渶鏂扮殑 SyncEntriesFromMaps(); - string path = System.IO.Path.Combine(Application.persistentDataPath, $"SongData_{songID}.json"); SongDataSerializable serializable = new SongDataSerializable(this); - // 1. 序列化基础数据 + // 1. 搴忓垪鍖栧熀纭€鏁版嵁 string jsonWithoutHash = JsonUtility.ToJson(serializable); - // 2. 计算 MD5 (使用自定义盐值提高安全性) + // 2. 璁$畻 MD5 (浣跨敤鑷畾涔夌洂鍊兼彁楂樺畨鍏ㄦ€? serializable.dataHash = CalculateMD5(jsonWithoutHash + "bansonic2026@fudongyouxi"); // 3. 再次序列化包含 Hash 的最终数据 string finalJson = JsonUtility.ToJson(serializable, true); - // 确保目录存在 - string dir = System.IO.Path.GetDirectoryName(path); - if (!System.IO.Directory.Exists(dir)) System.IO.Directory.CreateDirectory(dir); + SecureSaveVault.SaveRawJson(SecureSaveCategory, songID.ToString(), finalJson, GetLegacySavePath()); - System.IO.File.WriteAllText(path, finalJson); - - Debug.Log($"[SongData] {songName} (ID:{songID}) saved to {path}"); + Debug.Log($"[SongData] {songName} (ID:{songID}) saved to secure vault."); #if UNITY_EDITOR if (!Application.isPlaying) @@ -365,21 +361,32 @@ public class SongData : ScriptableObject } } + public void SetUnlocked(bool value) + { + if (isUnlocked == value) + { + return; + } + + isUnlocked = value; + +#if UNITY_EDITOR + UnityEditor.EditorUtility.SetDirty(this); +#endif + } + /// - /// 从持久化 JSON 恢复数据。 - /// 校验逻辑已迁移至 DataCheck 脚本,此处仅执行基础加载。 - /// + /// 浠庢寔涔呭寲 JSON 鎭㈠鏁版嵁銆? /// 鏍¢獙閫昏緫宸茶縼绉昏嚦 DataCheck 鑴氭湰锛屾澶勪粎鎵ц鍩虹鍔犺浇銆? /// public void LoadPersistent() { if (_isPersistentDataLoaded) return; - string path = System.IO.Path.Combine(Application.persistentDataPath, $"SongData_{songID}.json"); - if (System.IO.File.Exists(path)) + string json; + if (SecureSaveVault.TryLoadRawJson(SecureSaveCategory, songID.ToString(), out json, GetLegacySavePath())) { try { - string json = System.IO.File.ReadAllText(path); - // 尝试解析数据 + // 灏濊瘯瑙f瀽鏁版嵁 SongDataSerializable serializable = JsonUtility.FromJson(json); if (serializable != null) { @@ -391,7 +398,7 @@ public class SongData : ScriptableObject } catch (System.Exception e) { - Debug.LogWarning($"[SongData] {songName} 基础加载失败: {e.Message}"); + Debug.LogWarning($"[SongData] {songName} 鍩虹鍔犺浇澶辫触: {e.Message}"); } } else @@ -456,11 +463,7 @@ public class SongData : ScriptableObject UpdateOverallRecordsFromEntries(); - string path = System.IO.Path.Combine(Application.persistentDataPath, $"SongData_{songID}.json"); - if (System.IO.File.Exists(path)) - { - try { System.IO.File.Delete(path); } catch { } - } + SecureSaveVault.Delete(SecureSaveCategory, songID.ToString(), GetLegacySavePath()); SavePersistent(); @@ -470,8 +473,12 @@ public class SongData : ScriptableObject } /// - /// 当检测到篡改或文件损坏时,重置所有动态记录并立即重新保存文件以恢复合法性。 - /// + /// 褰撴娴嬪埌绡℃敼鎴栨枃浠舵崯鍧忔椂锛岄噸缃墍鏈夊姩鎬佽褰曞苟绔嬪嵆閲嶆柊淇濆瓨鏂囦欢浠ユ仮澶嶅悎娉曟€с€? /// + private string GetLegacySavePath() + { + return System.IO.Path.Combine(Application.persistentDataPath, $"SongData_{songID}.json"); + } + private void ResetToZeroAndSave() { // 1. 重置所有动态数值字段 @@ -498,15 +505,14 @@ public class SongData : ScriptableObject if (levelProgressMap == null) levelProgressMap = new Dictionary(); else levelProgressMap.Clear(); - // 3. 立即调用保存方法,生成一个新的、带有正确哈希值的合法文件 + // 3. 绔嬪嵆璋冪敤淇濆瓨鏂规硶锛岀敓鎴愪竴涓柊鐨勩€佸甫鏈夋纭搱甯屽€肩殑鍚堟硶鏂囦欢 SavePersistent(); Debug.LogWarning($"[SongData] {songName} has been fully reset to zero due to data integrity failure."); } /// - /// 静态校验方法,可在异步线程调用,判断 JSON 内容是否合法。 - /// + /// 闈欐€佹牎楠屾柟娉曪紝鍙湪寮傛绾跨▼璋冪敤锛屽垽鏂?JSON 鍐呭鏄惁鍚堟硶銆? /// public static bool VerifyJsonIntegrity(string json, string salt, out SongDataSerializable result) { result = null; @@ -519,7 +525,7 @@ public class SongData : ScriptableObject serializable.dataHash = ""; string currentJson = JsonUtility.ToJson(serializable); - // 使用静态 MD5 计算 + // 浣跨敤闈欐€?MD5 璁$畻 string calculatedHash = StaticCalculateMD5(currentJson + salt); result = serializable; @@ -620,8 +626,7 @@ public class SongData : ScriptableObject } /// - /// 将 Dictionary 中的数据同步回 ChartFileEntry 列表,确保 SO 内存数据与持久化数据一致。 - /// + /// 灏?Dictionary 涓殑鏁版嵁鍚屾鍥?ChartFileEntry 鍒楄〃锛岀‘淇?SO 鍐呭瓨鏁版嵁涓庢寔涔呭寲鏁版嵁涓€鑷淬€? /// public void SyncEntriesFromMaps() { if (chartFiles == null) return; @@ -898,3 +903,4 @@ public class SongData : ScriptableObject CalculateHighestPersonalRecord(); } } + diff --git a/Assets/songsDatabase/SongDataLoader.cs b/Assets/songsDatabase/SongDataLoader.cs index c8853909..26b12044 100644 --- a/Assets/songsDatabase/SongDataLoader.cs +++ b/Assets/songsDatabase/SongDataLoader.cs @@ -1,10 +1,11 @@ -using System.Collections; +using System.Collections; using System.Collections.Generic; using System.IO; using UnityEngine; public class SongDataLoader : MonoBehaviour { + private const string SecureCategory = "song_export"; private string jsonDirectory; public List loadedSongs = new List(); [SerializeField] private int _yieldEveryNFiles = 5; @@ -17,26 +18,27 @@ public class SongDataLoader : MonoBehaviour IEnumerator LoadAllSongsFromJsonRoutine() { - if (!Directory.Exists(jsonDirectory)) + List loadedJsonList = SecureSaveVault.LoadAllRawJson(SecureCategory, jsonDirectory); + if (loadedJsonList == null || loadedJsonList.Count == 0) { - Debug.LogError("JSON �ļ��в����ڣ�"); + Debug.LogError("JSON 持久化数据不存在"); yield break; } loadedSongs.Clear(); - IEnumerable jsonFiles = Directory.EnumerateFiles(jsonDirectory, "*.json"); int counter = 0; - foreach (string file in jsonFiles) + for (int i = 0; i < loadedJsonList.Count; i++) { - string json = File.ReadAllText(file); + string json = loadedJsonList[i]; SongDataSerializable jsonData = JsonUtility.FromJson(json); loadedSongs.Add(jsonData); - // 由于 SongDataSerializable 现在只存储动态分数,不再包含 songName - Debug.Log($"Loaded persistent song data from: {Path.GetFileName(file)}"); + Debug.Log("Loaded persistent song data from secure vault."); counter++; if (_yieldEveryNFiles > 0 && counter % _yieldEveryNFiles == 0) + { yield return null; + } } } } diff --git a/Assets/songsDatabase/SongDataManager.cs b/Assets/songsDatabase/SongDataManager.cs index cf8ba3c8..c922b723 100644 --- a/Assets/songsDatabase/SongDataManager.cs +++ b/Assets/songsDatabase/SongDataManager.cs @@ -1,8 +1,9 @@ -using System.IO; +using System.IO; using UnityEngine; public class SongDataManager : MonoBehaviour { + private const string SecureCategory = "song_export"; private string jsonDirectory; [Header("Settings")] @@ -12,12 +13,6 @@ public class SongDataManager : MonoBehaviour { jsonDirectory = Path.Combine(Application.persistentDataPath, "song_json_export"); - if (!Directory.Exists(jsonDirectory)) - { - Directory.CreateDirectory(jsonDirectory); - Debug.Log("Created song JSON directory: " + jsonDirectory); - } - if (autoSaveOnStart) { StartCoroutine(SaveAllSongDataToJsonRoutine()); @@ -39,7 +34,7 @@ public class SongDataManager : MonoBehaviour yield break; } - Debug.Log($"Start exporting {allSongData.Length} songs to JSON..."); + Debug.Log($"Start exporting {allSongData.Length} songs to secure vault..."); for (int i = 0; i < allSongData.Length; i++) { @@ -47,14 +42,13 @@ public class SongDataManager : MonoBehaviour if (song == null) continue; SongDataSerializable jsonData = new SongDataSerializable(song); - string json = JsonUtility.ToJson(jsonData, true); - - string filePath = Path.Combine(jsonDirectory, song.songID + ".json"); - File.WriteAllText(filePath, json); + string json = JsonUtility.ToJson(jsonData, false); + string legacyPath = Path.Combine(jsonDirectory, song.songID + ".json"); + SecureSaveVault.SaveRawJson(SecureCategory, song.songID.ToString(), json, legacyPath); yield return null; } - - Debug.Log("All song JSON files exported."); + + Debug.Log("All song JSON files exported to secure vault."); } } diff --git a/Assets/storeSystem/UI_Panel_Store.prefab b/Assets/storeSystem/UI_Panel_Store.prefab index eae7edfd..43efe008 100644 --- a/Assets/storeSystem/UI_Panel_Store.prefab +++ b/Assets/storeSystem/UI_Panel_Store.prefab @@ -5925,7 +5925,7 @@ MonoBehaviour: m_HandleRect: {fileID: 946030816342223727} m_Direction: 0 m_Value: 0 - m_Size: 0.99999994 + m_Size: 1 m_NumberOfSteps: 0 m_OnValueChanged: m_PersistentCalls: @@ -6659,7 +6659,7 @@ MonoBehaviour: m_Direction: 2 m_Value: 0 m_Size: 1 - m_NumberOfSteps: 11 + m_NumberOfSteps: 1 m_OnValueChanged: m_PersistentCalls: m_Calls: [] diff --git a/Assets/storeSystem/storeItemSO.cs b/Assets/storeSystem/storeItemSO.cs index 4e0269e6..daa4e43f 100644 --- a/Assets/storeSystem/storeItemSO.cs +++ b/Assets/storeSystem/storeItemSO.cs @@ -1,5 +1,6 @@ -using System.Collections.Generic; +using System.Collections.Generic; using UnityEngine; +using UnityEngine.Serialization; [CreateAssetMenu(fileName = "77xxx_storeItem", menuName = "Store/StoreItem")] public class storeItemSO : ScriptableObject @@ -8,20 +9,23 @@ public class storeItemSO : ScriptableObject public string itemName; public Sprite itemIcon; public int itemID; // Unique identifier for the item - public int itemSinglePurchaseQty; // Ʒι - public int itemPurchaseQuota; // Ʒ޹-1Ϊ޹ + public int itemSinglePurchaseQty; // 物品单次购买数量 + public int itemPurchaseQuota; // 物品限购配额,-1为不限购 [TextArea(3, 3)] public string itemDescription; - [TextArea(3, 10)] public string itemDetailedDescription; // Ʒʾĸϸı + [TextArea(3, 10)] public string itemDetailedDescription; // 这个是用来在物品详情界面显示的更详细的描述文本的 [Header("Item Type")] public bool isOnShelf = true; // Indicates if the item is currently available for purchase public bool canbepurchased = true; // Indicates if the item can be purchased with coins public bool isHot = false; // Indicates if the item is a hot item (for promotional purposes) - public bool user_has_read = false; // ûǷѾ鿴Ʒ + public bool user_has_read = false; // 用户是否已经查看过这个物品 public ItemType itemType; - public Player_SO associatedPlayer; // Only used if itemType is character + [FormerlySerializedAs("associatedPlayer")] + public AllyHero_SO associatedAllyHero; // Only used if itemType is character public SongData associatedSong; // Only used if itemType is song public notebook_faterType associatedStoryPassage; // Only used if itemType is storyPassage + public StoryPassageGrantMode storyPassageGrantMode = StoryPassageGrantMode.fatherOnly; + public int associatedStorySonId = -1; [Header("Purchase Cost")] public List costRequirements = new List(); @@ -30,7 +34,7 @@ public class storeItemSO : ScriptableObject public List unlockRequirements = new List(); [Header("Runtime Save Data")] - public int purchasedCount; // ѹ־û + public int purchasedCount; // 已购数量,会参与持久化 public enum ItemType { @@ -46,6 +50,14 @@ public class storeItemSO : ScriptableObject coins, } + public enum StoryPassageGrantMode + { + fatherOnly, + specificSonOnly, + fatherAndSpecificSon, + allSons + } + public enum RequirementType { none, @@ -68,4 +80,3 @@ public class storeItemSO : ScriptableObject public int value; } } - diff --git a/Assets/storeSystem/storeSystem.cs b/Assets/storeSystem/storeSystem.cs index a287decd..f2fab17b 100644 --- a/Assets/storeSystem/storeSystem.cs +++ b/Assets/storeSystem/storeSystem.cs @@ -9,6 +9,8 @@ public class storeSystem : MonoBehaviour { private const string ShowOnlyPurchasablePrefKey = "store.show_only_can_purchase"; private const string SortDropdownPrefKey = "store.sort_dropdown_value"; + private const string StoreStateSaveCategory = "store_state"; + private const string StoreStateSaveKey = "runtime"; [Header("Player Data")] [SerializeField] private Player_SO playerData; @@ -66,7 +68,7 @@ public class storeSystem : MonoBehaviour private bool suppressAmountInputCallback; private Color defaultSumCostColor = Color.white; - private string SaveFilePath + private string LegacySaveFilePath { get { return Path.Combine(Application.persistentDataPath, "storeSystem_state.json"); } } @@ -88,6 +90,7 @@ public class storeSystem : MonoBehaviour { PlayerEconomyLedger.EnsureInstance().AttachPlayerData(playerData); ExpBottleLedger.EnsureInstance().AttachPlayerData(playerData); + StoreOwnershipLedger.EnsureInstance().InitializeIfNeeded(); ResetPriceImageObjects(); LoadFilterPreferences(); SetDefaultToggleState(); @@ -619,6 +622,7 @@ public class storeSystem : MonoBehaviour { return itemSO != null && itemSO.canbepurchased + && !IsAssociatedContentUnlocked(itemSO) && !IsSoldOut(itemSO) && HasCoinRequirement(itemSO); } @@ -1019,7 +1023,7 @@ public class storeSystem : MonoBehaviour } RegisterPurchasedCount(currentSelectedItem.itemID, grantedCount); - RefreshPurchaseSummary(); + RefreshCurrentView(); } private string GetAmountAndQuotaText(storeItemSO itemSO) @@ -1060,7 +1064,7 @@ public class storeSystem : MonoBehaviour private string GetPriceAmountText(storeItemSO itemSO) { - if (itemSO == null || !itemSO.canbepurchased || !HasCoinRequirement(itemSO)) + if (itemSO == null || !itemSO.canbepurchased || IsAssociatedContentUnlocked(itemSO) || !HasCoinRequirement(itemSO)) { return "不可购买"; } @@ -1070,7 +1074,7 @@ public class storeSystem : MonoBehaviour private bool ShouldShowPriceIcon(storeItemSO itemSO) { - return itemSO != null && itemSO.canbepurchased && HasCoinRequirement(itemSO); + return itemSO != null && itemSO.canbepurchased && !IsAssociatedContentUnlocked(itemSO) && HasCoinRequirement(itemSO); } private bool CanPurchaseCurrentSelection(storeItemSO itemSO) @@ -1091,6 +1095,7 @@ public class storeSystem : MonoBehaviour private void SetupAvailabilityState(storeItemPrefab itemView, storeItemSO itemSO) { bool isSoldOut = IsSoldOut(itemSO); + bool alreadyUnlocked = IsAssociatedContentUnlocked(itemSO); bool cannotPurchase = !itemSO.canbepurchased; if (itemView.leftCorner_statusImage != null) @@ -1100,7 +1105,7 @@ public class storeSystem : MonoBehaviour if (itemView.lock_cannotClickImage != null) { - itemView.lock_cannotClickImage.SetActive(isSoldOut || cannotPurchase); + itemView.lock_cannotClickImage.SetActive(isSoldOut || cannotPurchase || alreadyUnlocked); } if (itemView.why_cannot_buy != null) @@ -1109,6 +1114,10 @@ public class storeSystem : MonoBehaviour { itemView.why_cannot_buy.text = "已售罄"; } + else if (alreadyUnlocked) + { + itemView.why_cannot_buy.text = "已解锁"; + } else if (cannotPurchase) { itemView.why_cannot_buy.text = "物品未上架"; @@ -1138,6 +1147,11 @@ public class storeSystem : MonoBehaviour return itemSO.purchasedCount >= itemSO.itemPurchaseQuota; } + private bool IsAssociatedContentUnlocked(storeItemSO itemSO) + { + return StoreOwnershipLedger.EnsureInstance().IsOwned(itemSO); + } + private void HandleItemClicked(storeItemPrefab itemView) { if (itemView == null || itemView.thisItemSO == null) @@ -1232,15 +1246,14 @@ public class storeSystem : MonoBehaviour { persistedState = new StoreRuntimeSaveData(); - if (!File.Exists(SaveFilePath)) - { - return; - } - try { - var json = File.ReadAllText(SaveFilePath); - var loadedData = JsonUtility.FromJson(json); + StoreRuntimeSaveData loadedData; + if (!SecureSaveVault.TryLoadJson(StoreStateSaveCategory, StoreStateSaveKey, out loadedData, LegacySaveFilePath)) + { + return; + } + if (loadedData != null && loadedData.entries != null) { persistedState = loadedData; @@ -1307,8 +1320,7 @@ public class storeSystem : MonoBehaviour try { NormalizePersistedEntries(); - var json = JsonUtility.ToJson(persistedState, true); - File.WriteAllText(SaveFilePath, json); + SecureSaveVault.SaveJson(StoreStateSaveCategory, StoreStateSaveKey, persistedState, LegacySaveFilePath); #if UNITY_EDITOR PersistStateBackToEditorAssets(); #endif