From 430fc90ade20ef1b54b9edd1ee25d70364c5fdb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B8=B8=E6=88=8F=E7=B3=95=E6=89=8B=E7=88=B1=E4=B8=BD?= =?UTF-8?q?=E4=B8=9D?= <1747715394@qq.com> Date: Wed, 12 Nov 2025 18:39:09 +0800 Subject: [PATCH] 111 --- Assets/Boot.unity | 2 +- Assets/GameFramework/Runtime/Asset.cs | 15 - Assets/GameFramework/Runtime/Asset.cs.meta | 2 - Assets/GameFramework/Runtime/Boot.cs | 8 +- .../Runtime/GameFramework.Runtime.asmdef | 3 +- Assets/GameFramework/Runtime/GameManager.cs | 9 +- .../Main/HotUpdateDll/GameScripts.Main.bytes | Bin 9216 -> 20480 bytes Assets/GameRes/Main/Prefab.meta | 8 + Assets/GameRes/Main/Prefab/GameStart.prefab | 46 ++ .../GameRes/Main/Prefab/GameStart.prefab.meta | 7 + Assets/GameRes/Main/Scenes/Test.unity | 13 - Assets/GameRes/Main/UI/LoadingWindow.prefab | 409 ++++++++++++++++++ .../GameRes/Main/UI/LoadingWindow.prefab.meta | 7 + .../HotUpdateDll/GameScripts.Preload.bytes | Bin 6144 -> 6144 bytes Assets/GameScripts/Main/AssetLoad.cs | 52 +++ Assets/GameScripts/Main/AssetLoad.cs.meta | 2 + Assets/GameScripts/Main/GameSceneManager.cs | 45 ++ .../GameScripts/Main/GameSceneManager.cs.meta | 2 + Assets/GameScripts/Main/GameStart.cs | 15 +- Assets/GameScripts/Main/UI/LoadingWindow.cs | 16 + .../GameScripts/Main/UI/LoadingWindow.cs.meta | 2 + Assets/GameScripts/Main/UI/UIManager.cs | 125 +----- .../AssetBundleCollectorConfig.xml | 3 + .../AssetBundleCollectorSetting.asset | 13 + .../yoo/Preload/BuildinCatalog.bytes | Bin 435 -> 436 bytes .../yoo/Preload/BuildinCatalog.json | 6 +- .../yoo/Preload/Preload.version | 2 +- .../yoo/Preload/Preload_2025-11-05-293.bytes | Bin 792 -> 0 bytes .../yoo/Preload/Preload_2025-11-05-293.hash | 1 - .../yoo/Preload/Preload_2025-11-12-1073.bytes | Bin 0 -> 795 bytes ...eta => Preload_2025-11-12-1073.bytes.meta} | 2 +- .../yoo/Preload/Preload_2025-11-12-1073.hash | 1 + ...meta => Preload_2025-11-12-1073.hash.meta} | 2 +- ...assets_gameres_preload_hotupdatedll.bundle | Bin 4513 -> 4541 bytes .../preload_assets_gameres_preload_ui.bundle | Bin 8782 -> 8795 bytes .../Examples & Extras/Scripts/Benchmark03.cs | 2 +- .../Examples & Extras/Scripts/SimpleScript.cs | 2 +- 37 files changed, 671 insertions(+), 151 deletions(-) delete mode 100644 Assets/GameFramework/Runtime/Asset.cs delete mode 100644 Assets/GameFramework/Runtime/Asset.cs.meta create mode 100644 Assets/GameRes/Main/Prefab.meta create mode 100644 Assets/GameRes/Main/Prefab/GameStart.prefab create mode 100644 Assets/GameRes/Main/Prefab/GameStart.prefab.meta create mode 100644 Assets/GameRes/Main/UI/LoadingWindow.prefab create mode 100644 Assets/GameRes/Main/UI/LoadingWindow.prefab.meta create mode 100644 Assets/GameScripts/Main/AssetLoad.cs create mode 100644 Assets/GameScripts/Main/AssetLoad.cs.meta create mode 100644 Assets/GameScripts/Main/GameSceneManager.cs create mode 100644 Assets/GameScripts/Main/GameSceneManager.cs.meta create mode 100644 Assets/GameScripts/Main/UI/LoadingWindow.cs create mode 100644 Assets/GameScripts/Main/UI/LoadingWindow.cs.meta delete mode 100644 Assets/StreamingAssets/yoo/Preload/Preload_2025-11-05-293.bytes delete mode 100644 Assets/StreamingAssets/yoo/Preload/Preload_2025-11-05-293.hash create mode 100644 Assets/StreamingAssets/yoo/Preload/Preload_2025-11-12-1073.bytes rename Assets/StreamingAssets/yoo/Preload/{Preload_2025-11-05-293.hash.meta => Preload_2025-11-12-1073.bytes.meta} (74%) create mode 100644 Assets/StreamingAssets/yoo/Preload/Preload_2025-11-12-1073.hash rename Assets/StreamingAssets/yoo/Preload/{Preload_2025-11-05-293.bytes.meta => Preload_2025-11-12-1073.hash.meta} (74%) diff --git a/Assets/Boot.unity b/Assets/Boot.unity index f1e555e..e97a145 100644 --- a/Assets/Boot.unity +++ b/Assets/Boot.unity @@ -655,7 +655,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: MainCamera: {fileID: 330585545} - PlayMode: 0 + PlayMode: 2 --- !u!4 &1019312449 Transform: m_ObjectHideFlags: 0 diff --git a/Assets/GameFramework/Runtime/Asset.cs b/Assets/GameFramework/Runtime/Asset.cs deleted file mode 100644 index ce5594c..0000000 --- a/Assets/GameFramework/Runtime/Asset.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Cysharp.Threading.Tasks; -using UnityEngine; -using YooAsset; - -namespace Tuan.GameFramework -{ - public class Asset : MonoBehaviour - { - async UniTask LoadAsync(string name) - { - AssetHandle handle = YooAssets.LoadAssetAsync(name); - await handle.ToUniTask(); - } - } -} \ No newline at end of file diff --git a/Assets/GameFramework/Runtime/Asset.cs.meta b/Assets/GameFramework/Runtime/Asset.cs.meta deleted file mode 100644 index 4cb98ed..0000000 --- a/Assets/GameFramework/Runtime/Asset.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: d9170e9f660395d47b0f02466e5fd091 \ No newline at end of file diff --git a/Assets/GameFramework/Runtime/Boot.cs b/Assets/GameFramework/Runtime/Boot.cs index 801ae4f..5985bac 100644 --- a/Assets/GameFramework/Runtime/Boot.cs +++ b/Assets/GameFramework/Runtime/Boot.cs @@ -26,13 +26,9 @@ namespace Tuan.GameFramework private async UniTask EnterGame() { Debug.Log("EnterGame"); - var assetHandle = YooAssets.TryGetPackage("Main").LoadSceneAsync("Test"); + var assetHandle = YooAssets.LoadAssetAsync("GameStart"); await assetHandle.ToUniTask(); - if (assetHandle.Status == EOperationStatus.Succeed) - { - assetHandle.ActivateScene(); - PatchEvent.ClosePatchWindow(); - } + GameObject.Instantiate(assetHandle.AssetObject); } } } \ No newline at end of file diff --git a/Assets/GameFramework/Runtime/GameFramework.Runtime.asmdef b/Assets/GameFramework/Runtime/GameFramework.Runtime.asmdef index 73f1e82..7801ddc 100644 --- a/Assets/GameFramework/Runtime/GameFramework.Runtime.asmdef +++ b/Assets/GameFramework/Runtime/GameFramework.Runtime.asmdef @@ -6,7 +6,8 @@ "GUID:f51ebe6a0ceec4240a699833d6309b23", "GUID:3fe1a3e70da50184f9897101cad7e4f2", "GUID:13ba8ce62aa80c74598530029cb2d649", - "GUID:928f8a513cd12e84cb0d3c0a21a84e2f" + "GUID:928f8a513cd12e84cb0d3c0a21a84e2f", + "GUID:3de88c88fbbb8f944b9210d496af9762" ], "includePlatforms": [], "excludePlatforms": [], diff --git a/Assets/GameFramework/Runtime/GameManager.cs b/Assets/GameFramework/Runtime/GameManager.cs index 2b38a75..93b488c 100644 --- a/Assets/GameFramework/Runtime/GameManager.cs +++ b/Assets/GameFramework/Runtime/GameManager.cs @@ -1,9 +1,16 @@ +using IngameDebugConsole; using UnityEngine; namespace Tuan.GameFramework { public class GameManager : Singleton { - + [ConsoleMethod("clear_prefs", "Clears all PlayerPrefs data")] + public static void ClearPlayerPrefs() + { + PlayerPrefs.DeleteAll(); + PlayerPrefs.Save(); + Debug.Log("All PlayerPrefs have been cleared!"); + } } } diff --git a/Assets/GameRes/Main/HotUpdateDll/GameScripts.Main.bytes b/Assets/GameRes/Main/HotUpdateDll/GameScripts.Main.bytes index e952308e5d409987f010a8913c7003e8c928f597..af371eb6c9380053dafcb52d7f1ffd1774320ed7 100644 GIT binary patch literal 20480 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 literal 9216 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 Td+IFOAbwd@zv}mY&jbGrL$fAK diff --git a/Assets/GameRes/Main/Prefab.meta b/Assets/GameRes/Main/Prefab.meta new file mode 100644 index 0000000..3c7d38c --- /dev/null +++ b/Assets/GameRes/Main/Prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1415f0f3bff6246479ccd70546d6403f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameRes/Main/Prefab/GameStart.prefab b/Assets/GameRes/Main/Prefab/GameStart.prefab new file mode 100644 index 0000000..94ebc19 --- /dev/null +++ b/Assets/GameRes/Main/Prefab/GameStart.prefab @@ -0,0 +1,46 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3680163959919453567 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6554826351869314494} + - component: {fileID: 3221097624441381261} + m_Layer: 0 + m_Name: GameStart + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6554826351869314494 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3680163959919453567} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &3221097624441381261 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3680163959919453567} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e78850d2b34a8e74da183b8235948929, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/GameRes/Main/Prefab/GameStart.prefab.meta b/Assets/GameRes/Main/Prefab/GameStart.prefab.meta new file mode 100644 index 0000000..80de711 --- /dev/null +++ b/Assets/GameRes/Main/Prefab/GameStart.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7f51088fc82de064d9196043423bfedc +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameRes/Main/Scenes/Test.unity b/Assets/GameRes/Main/Scenes/Test.unity index 99f7b68..c786faa 100644 --- a/Assets/GameRes/Main/Scenes/Test.unity +++ b/Assets/GameRes/Main/Scenes/Test.unity @@ -241,7 +241,6 @@ GameObject: - component: {fileID: 462509702} - component: {fileID: 462509701} - component: {fileID: 462509700} - - component: {fileID: 462509704} m_Layer: 0 m_Name: Cube m_TagString: Untagged @@ -338,18 +337,6 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &462509704 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 462509699} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e78850d2b34a8e74da183b8235948929, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!1001 &742264193 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Assets/GameRes/Main/UI/LoadingWindow.prefab b/Assets/GameRes/Main/UI/LoadingWindow.prefab new file mode 100644 index 0000000..fe67b0e --- /dev/null +++ b/Assets/GameRes/Main/UI/LoadingWindow.prefab @@ -0,0 +1,409 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1385837151055752713 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7044408853661312380} + - component: {fileID: 5131482576160889150} + - component: {fileID: 7799108794961275486} + m_Layer: 5 + m_Name: Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7044408853661312380 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1385837151055752713} + 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: 7362500472670998731} + 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 &5131482576160889150 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1385837151055752713} + m_CullTransparentMesh: 0 +--- !u!114 &7799108794961275486 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1385837151055752713} + 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.7735849, g: 0.1715023, b: 0.1715023, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &2179524638494706124 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7362500472670998731} + 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 &7362500472670998731 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2179524638494706124} + 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: 7044408853661312380} + m_Father: {fileID: 7303953226439845461} + 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: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4646109410349620396 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7303953226439845461} + - component: {fileID: 8949977484564844108} + m_Layer: 5 + m_Name: Slider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7303953226439845461 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4646109410349620396} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.00008, y: 1.00008, z: 1.00008} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4627338115966563355} + - {fileID: 7362500472670998731} + - {fileID: 2713769441724495964} + m_Father: {fileID: 2569990057225954958} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 89.99707} + m_SizeDelta: {x: 690, y: 120} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &8949977484564844108 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4646109410349620396} + 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: 0 + 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: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 0 + m_TargetGraphic: {fileID: 0} + m_FillRect: {fileID: 7044408853661312380} + m_HandleRect: {fileID: 0} + m_Direction: 0 + m_MinValue: 0 + m_MaxValue: 1 + m_WholeNumbers: 0 + m_Value: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &6364109098557891170 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2569990057225954958} + - component: {fileID: 1261046386304322891} + m_Layer: 5 + m_Name: LoadingWindow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2569990057225954958 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6364109098557891170} + 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: 7303953226439845461} + m_Father: {fileID: 0} + 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 &1261046386304322891 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6364109098557891170} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b0cfeb8d9ed2b7d45841727433c72b07, type: 3} + m_Name: + m_EditorClassIdentifier: + parent: {fileID: 0} + slider: {fileID: 8949977484564844108} + progressText: {fileID: 9157616735088769728} +--- !u!1 &6489406035438601982 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2713769441724495964} + - component: {fileID: 8818663234583423289} + - component: {fileID: 9157616735088769728} + m_Layer: 5 + m_Name: txt_tips + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2713769441724495964 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6489406035438601982} + 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: 7303953226439845461} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8818663234583423289 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6489406035438601982} + m_CullTransparentMesh: 0 +--- !u!114 &9157616735088769728 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6489406035438601982} + 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: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 40 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 5 + m_MaxSize: 50 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u63D0\u793A" +--- !u!1 &7508066978074091838 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4627338115966563355} + - component: {fileID: 692668247978123654} + - component: {fileID: 9222579183494656559} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4627338115966563355 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7508066978074091838} + 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: 7303953226439845461} + 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: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &692668247978123654 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7508066978074091838} + m_CullTransparentMesh: 0 +--- !u!114 &9222579183494656559 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7508066978074091838} + 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.9607843, b: 0.5785788, 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 diff --git a/Assets/GameRes/Main/UI/LoadingWindow.prefab.meta b/Assets/GameRes/Main/UI/LoadingWindow.prefab.meta new file mode 100644 index 0000000..64980b3 --- /dev/null +++ b/Assets/GameRes/Main/UI/LoadingWindow.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: aa0881160fd3b894280d93f1eb0876ce +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameRes/Preload/HotUpdateDll/GameScripts.Preload.bytes b/Assets/GameRes/Preload/HotUpdateDll/GameScripts.Preload.bytes index 4a7c11993ad5127f8f9be435e2d0ab392fe86bf3..5c50a23e842f52922e3404e1d682d638e6f2e2bb 100644 GIT binary patch delta 1857 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 diff --git a/Assets/GameScripts/Main/AssetLoad.cs b/Assets/GameScripts/Main/AssetLoad.cs new file mode 100644 index 0000000..5e34c76 --- /dev/null +++ b/Assets/GameScripts/Main/AssetLoad.cs @@ -0,0 +1,52 @@ +using Cysharp.Threading.Tasks; +using System.Collections.Generic; +using UnityEngine; +using YooAsset; +using Tuan.GameFramework; + +namespace Tuan.GameScripts.Main +{ + public class AssetLoad :Singleton + { + Dictionary assetHandles = new Dictionary(); + public async UniTask LoadAsync(string name)where T: Object + { + if (!assetHandles.ContainsKey(name)) + { + AssetHandle handle = YooAssets.LoadAssetAsync(name); + await handle.ToUniTask(); + assetHandles.Add(name, handle); + Debug.Log($"AssetLoad:{name}"); + return handle.AssetObject as T; + } + else + { + AssetHandle handle = assetHandles[name]; + Debug.Log($"AssetLoad:{name}(已缓存handle)"); + return handle.AssetObject as T; + } + } + public T Load(string name) where T : Object + { + if (!assetHandles.ContainsKey(name)) + { + AssetHandle handle = YooAssets.LoadAssetSync(name); + assetHandles.Add(name, handle); + Debug.Log($"AssetLoad:{name}"); + return handle.AssetObject as T; + } + else + { + AssetHandle handle = assetHandles[name]; + Debug.Log($"AssetLoad:{name}(已缓存handle)"); + return handle.AssetObject as T; + } + } + public AssetHandle GetHandle(string name) + { + if (assetHandles.ContainsKey(name)) + return assetHandles[name]; + return null; + } + } +} \ No newline at end of file diff --git a/Assets/GameScripts/Main/AssetLoad.cs.meta b/Assets/GameScripts/Main/AssetLoad.cs.meta new file mode 100644 index 0000000..744899b --- /dev/null +++ b/Assets/GameScripts/Main/AssetLoad.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 44bc8a9986f966a4ebae93b30342d02f \ No newline at end of file diff --git a/Assets/GameScripts/Main/GameSceneManager.cs b/Assets/GameScripts/Main/GameSceneManager.cs new file mode 100644 index 0000000..1cec87d --- /dev/null +++ b/Assets/GameScripts/Main/GameSceneManager.cs @@ -0,0 +1,45 @@ +using UnityEngine; +using System.Collections.Generic; +using YooAsset; +using Cysharp.Threading.Tasks; +using Tuan.GameFramework; + +namespace Tuan.GameScripts.Main +{ + public class GameSceneManager : Singleton + { + Dictionary sceneHandles = new Dictionary(); + public async UniTask LoadSceneAsync(string sceneName) + { + SceneHandle sceneHandle = null; + LoadingWindow loadingWindow = await UIManager.Inst.ShowUIAsync($"Loading{sceneName}", MainUICanvas.Inst.Medium, true); + if (!sceneHandles.ContainsKey(sceneName)) + { + sceneHandle = YooAssets.LoadSceneAsync("Test"); + await sceneHandle.ToUniTask(loadingWindow); + sceneHandles[sceneName] = sceneHandle; + } + else + { + sceneHandle = sceneHandles[sceneName]; + } + sceneHandle.ActivateScene(); + } + public async void LoadScene(string sceneName) + { + SceneHandle sceneHandle = null; + if (!sceneHandles.ContainsKey(sceneName)) + { + LoadingWindow loadingWindow = await UIManager.Inst.ShowUIAsync($"Loading{sceneName}", MainUICanvas.Inst.Medium, true); + sceneHandle = YooAssets.LoadSceneSync("Test"); + sceneHandles[sceneName] = sceneHandle; + } + else + { + sceneHandle = sceneHandles[sceneName]; + } + sceneHandle.ActivateScene(); + } + } +} + diff --git a/Assets/GameScripts/Main/GameSceneManager.cs.meta b/Assets/GameScripts/Main/GameSceneManager.cs.meta new file mode 100644 index 0000000..1090edb --- /dev/null +++ b/Assets/GameScripts/Main/GameSceneManager.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: ce14e279825befb4e8d30f8929445030 \ No newline at end of file diff --git a/Assets/GameScripts/Main/GameStart.cs b/Assets/GameScripts/Main/GameStart.cs index 306239d..d82eaf9 100644 --- a/Assets/GameScripts/Main/GameStart.cs +++ b/Assets/GameScripts/Main/GameStart.cs @@ -2,6 +2,7 @@ using UnityEngine; using Cysharp.Threading.Tasks; using Tuan.GameFramework; using Tuan.GameScripts.Preload; +using YooAsset; namespace Tuan.GameScripts.Main { @@ -12,8 +13,13 @@ namespace Tuan.GameScripts.Main { Debug.Log("GameStart"); GamePreload.Inst.Test("call by GameStart"); - // _ = FrameSplittingTest(1); - await UIManager.Inst.ShowUIAsync("test1", MainUICanvas.Inst.Medium); + _ = LoadSceneTest(); + // _ = FrameSplittingTest(1); + SimpleR3Test ui = await UIManager.Inst.ShowUIAsync("test1", MainUICanvas.Inst.Medium); + UIManager.Inst.CloseUI(ui); + await UIManager.Inst.ShowUIAsync("test2", MainUICanvas.Inst.Medium); + await UIManager.Inst.ShowUIAsync("test3", MainUICanvas.Inst.Medium); + await UIManager.Inst.ShowUIAsync("test1"); } async UniTask FrameSplittingTest(int delayFrame) { @@ -23,5 +29,10 @@ namespace Tuan.GameScripts.Main await UniTask.DelayFrame(delayFrame); } } + async UniTask LoadSceneTest() + { + PatchEvent.ClosePatchWindow(); + await GameSceneManager.Inst.LoadSceneAsync("Test"); + } } } \ No newline at end of file diff --git a/Assets/GameScripts/Main/UI/LoadingWindow.cs b/Assets/GameScripts/Main/UI/LoadingWindow.cs new file mode 100644 index 0000000..cdf3e92 --- /dev/null +++ b/Assets/GameScripts/Main/UI/LoadingWindow.cs @@ -0,0 +1,16 @@ +using System; +using UnityEngine; +using UnityEngine.UI; +using Tuan.GameScripts.Main; + +public class LoadingWindow : UIBase,IProgress +{ + public Slider slider; + public Text progressText; + public void Report(float value) + { + slider.value = value; + progressText.text = $"{value * 100:F0}%"; + Debug.Log($"{gameObject.name};{value}"); + } +} diff --git a/Assets/GameScripts/Main/UI/LoadingWindow.cs.meta b/Assets/GameScripts/Main/UI/LoadingWindow.cs.meta new file mode 100644 index 0000000..57de619 --- /dev/null +++ b/Assets/GameScripts/Main/UI/LoadingWindow.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: b0cfeb8d9ed2b7d45841727433c72b07 \ No newline at end of file diff --git a/Assets/GameScripts/Main/UI/UIManager.cs b/Assets/GameScripts/Main/UI/UIManager.cs index d1e9a90..c0acbd5 100644 --- a/Assets/GameScripts/Main/UI/UIManager.cs +++ b/Assets/GameScripts/Main/UI/UIManager.cs @@ -10,8 +10,7 @@ namespace Tuan.GameScripts.Main public class UIManager : Singleton { Dictionary openedUIs = new Dictionary(); - Dictionary assetHandles = new Dictionary(); - Stack uiStack = new Stack(); + LinkedList uiLinkedList = new LinkedList(); public T ShowUI(string uiName, RectTransform parent = null, bool isFull = false) where T : UIBase { @@ -19,17 +18,19 @@ namespace Tuan.GameScripts.Main string uiType = typeof(T).Name; if (!openedUIs.ContainsKey(uiName)) { - GameObject uiPrefab = LoadUI(uiType); + GameObject uiPrefab = AssetLoad.Inst.Load(uiType); ui = CreateUI(uiPrefab, uiName, parent, isFull); openedUIs[uiName] = ui; - uiStack.Push(ui); } else { ui = openedUIs[uiName] as T; + uiLinkedList.Remove(ui); } Debug.Log($"ShowUI====>name:{uiName} type:{typeof(T).Name}"); + ui.gameObject.SetActive(true); ui.OnShow(); + uiLinkedList.AddLast(ui); return ui; } public async UniTask ShowUIAsync(string uiName, RectTransform parent = null, bool isFull = false) where T : UIBase @@ -38,19 +39,36 @@ namespace Tuan.GameScripts.Main string uiType = typeof(T).Name; if (!openedUIs.ContainsKey(uiName)) { - GameObject uiPrefab = await LoadUIAsync(uiType); + GameObject uiPrefab = await AssetLoad.Inst.LoadAsync(uiType); ui = CreateUI(uiPrefab, uiName, parent, isFull); openedUIs[uiName] = ui; - uiStack.Push(ui); } else { ui = openedUIs[uiName] as T; + uiLinkedList.Remove(ui); } Debug.Log($"ShowUIAsync====>name:{uiName} type:{typeof(T).Name}"); + ui.gameObject.SetActive(true); ui.OnShow(); + uiLinkedList.AddLast(ui); return ui; } + public void CloseUI(string uiName) + { + if (!openedUIs.ContainsKey(uiName)) + return; + var ui = openedUIs[uiName]; + ui.OnHide(); + ui.gameObject.SetActive(false); + uiLinkedList.Remove(ui); + } + public void CloseUI(UIBase ui) + { + ui.OnHide(); + ui.gameObject.SetActive(false); + uiLinkedList.Remove(ui); + } T CreateUI(GameObject uiPrefab, string uiName, RectTransform parent = null, bool isFull = false) where T : UIBase { GameObject uiObj = GameObject.Instantiate(uiPrefab); @@ -61,100 +79,5 @@ namespace Tuan.GameScripts.Main Debug.Log($"CreateUI====>name:{uiName} type:{typeof(T).Name}"); return ui; } - GameObject LoadUI(string uiType) - { - if (!assetHandles.ContainsKey(uiType)) - { - AssetHandle uiHandle = YooAssets.LoadAssetSync(uiType); - assetHandles.Add(uiType, uiHandle); - return (GameObject)uiHandle.AssetObject; - } - else - { - AssetHandle uiHandle = assetHandles[uiType]; - return (GameObject)uiHandle.AssetObject; - } - } - async UniTask LoadUIAsync(string uiType) - { - if (!assetHandles.ContainsKey(uiType)) - { - AssetHandle uiHandle = YooAssets.LoadAssetAsync(uiType); - await uiHandle.ToUniTask(); - assetHandles.Add(uiType, uiHandle); - return (GameObject)uiHandle.AssetObject; - } - else - { - AssetHandle uiHandle = assetHandles[uiType]; - return (GameObject)uiHandle.AssetObject; - } - } - - #region 用于测试没挂载UIBase的 - Dictionary testOpenedUIs = new Dictionary(); - Stack testUIStack = new Stack(); - public GameObject TestShowUI(string path, string uiName, RectTransform parent = null, bool isFull = false) - { - GameObject ui = null; - if (!testOpenedUIs.ContainsKey(uiName)) - { - GameObject uiPrefab = LoadUI(path); - ui = TestCreateUI(uiPrefab, uiName, parent, isFull); - testOpenedUIs[uiName] = ui; - testUIStack.Push(ui); - } - else - { - ui = testOpenedUIs[uiName]; - } - Debug.Log($"TestShowUI====>name:{uiName}"); - return ui; - } - public async UniTask TestShowUIAsync(string path, string uiName, RectTransform parent = null, bool isFull = false) - { - GameObject ui = null; - if (!testOpenedUIs.ContainsKey(uiName)) - { - GameObject uiPrefab = await LoadUIAsync(path); - ui = TestCreateUI(uiPrefab, uiName, parent, isFull); - testOpenedUIs[uiName] = ui; - testUIStack.Push(ui); - } - else - { - ui = testOpenedUIs[uiName]; - } - Debug.Log($"TestShowUI====>name:{uiName}"); - return ui; - } - GameObject TestCreateUI(GameObject uiPrefab, string uiName, RectTransform parent = null, bool isFull = false) - { - GameObject uiObj = GameObject.Instantiate(uiPrefab); - uiObj.name = uiName; - RectTransform ui = uiObj.GetComponent(); - if (parent) TestSetParent(ui, parent, isFull); - Debug.Log($"TestCreateUI====>name:{uiName}"); - return uiObj; - } - void TestSetFull(RectTransform rectTransform) - { - rectTransform.anchorMin = Vector2.zero; - rectTransform.anchorMax = Vector2.one; - rectTransform.offsetMin = Vector2.zero; - rectTransform.offsetMax = Vector2.zero; - rectTransform.sizeDelta = Vector2.zero; - } - - void TestSetParent(RectTransform ui, RectTransform parent, bool isFull = false) - { - ui.SetParent(parent); - ui.localScale = Vector3.one; - ui.localPosition = Vector3.zero; - ui.localRotation = Quaternion.identity; - if (isFull) - TestSetFull(ui); - } - #endregion } } \ No newline at end of file diff --git a/Assets/GameSetting/AssetBundleCollectorConfig.xml b/Assets/GameSetting/AssetBundleCollectorConfig.xml index a4c65db..64421ce 100644 --- a/Assets/GameSetting/AssetBundleCollectorConfig.xml +++ b/Assets/GameSetting/AssetBundleCollectorConfig.xml @@ -22,5 +22,8 @@ + + + \ No newline at end of file diff --git a/Assets/GameSetting/AssetBundleCollectorSetting.asset b/Assets/GameSetting/AssetBundleCollectorSetting.asset index b7879f5..6c22a5a 100644 --- a/Assets/GameSetting/AssetBundleCollectorSetting.asset +++ b/Assets/GameSetting/AssetBundleCollectorSetting.asset @@ -112,3 +112,16 @@ MonoBehaviour: FilterRuleName: CollectAll AssetTags: UserData: + - GroupName: Prefab + GroupDesc: + AssetTags: + ActiveRuleName: EnableGroup + Collectors: + - CollectPath: Assets/GameRes/Main/Prefab + CollectorGUID: 1415f0f3bff6246479ccd70546d6403f + CollectorType: 0 + AddressRuleName: AddressByFileName + PackRuleName: PackSeparately + FilterRuleName: CollectAll + AssetTags: + UserData: diff --git a/Assets/StreamingAssets/yoo/Preload/BuildinCatalog.bytes b/Assets/StreamingAssets/yoo/Preload/BuildinCatalog.bytes index bb0c4d82c76ce3fbade2af9f8143e71febf646ad..f99c053a3e6b892bfd1b471f7a210f306a4ff38c 100644 GIT binary patch delta 105 zcmWN}!41MN3sDsmoipq=-PbnwlCZ3@f;O4B&US#Tt(s0oVBw41NHCcemMd7 C%^7|G delta 100 zcmV~$!3~2j3;;k^s9!$qpDqx|cI-Hrfhlls<|!jELRALj?wbD7_g!XSWKBc~HF3*N w0QkUgaqZc+CPfJMF*sUxblW6E_G7iBhgD+MY?UL}qtvj_K;!D2e&_3P1G*v^r~m)} diff --git a/Assets/StreamingAssets/yoo/Preload/BuildinCatalog.json b/Assets/StreamingAssets/yoo/Preload/BuildinCatalog.json index 1dd16f6..200fbd2 100644 --- a/Assets/StreamingAssets/yoo/Preload/BuildinCatalog.json +++ b/Assets/StreamingAssets/yoo/Preload/BuildinCatalog.json @@ -1,14 +1,14 @@ { "FileVersion": "1.0.0", "PackageName": "Preload", - "PackageVersion": "2025-11-05-293", + "PackageVersion": "2025-11-12-1073", "Wrappers": [ { - "BundleGUID": "fb4b5c3ba946410dff2e9cb0b7a4e44d", + "BundleGUID": "b3d4761368f31213b75688ef3b1d4b9e", "FileName": "preload_assets_gameres_preload_hotupdatedll.bundle" }, { - "BundleGUID": "3ce7812253782ee2be68e7e5e0728bc1", + "BundleGUID": "3ea17e36551d92a341907924a243d449", "FileName": "preload_assets_gameres_preload_ui.bundle" }, { diff --git a/Assets/StreamingAssets/yoo/Preload/Preload.version b/Assets/StreamingAssets/yoo/Preload/Preload.version index 143144d..c61db0f 100644 --- a/Assets/StreamingAssets/yoo/Preload/Preload.version +++ b/Assets/StreamingAssets/yoo/Preload/Preload.version @@ -1 +1 @@ -2025-11-05-293 \ No newline at end of file +2025-11-12-1073 \ No newline at end of file diff --git a/Assets/StreamingAssets/yoo/Preload/Preload_2025-11-05-293.bytes b/Assets/StreamingAssets/yoo/Preload/Preload_2025-11-05-293.bytes deleted file mode 100644 index 3abab5ea770de82ce5c788ec97b265e683dba522..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 792 zcma)%J!=&~6ow~>A|ePOK?|G3Dus7<=IqSwY|z3)P#bemgIHbWp!`FNl6Zf)HqCkapxe&UC8VSy0R=Az59 ztmVK&7)o8SpDEHN*XJ>6{%7#mPAfFxY*{sCiw@c6n2*G19_t&po~ z2mgpwe!qK(T&^mttDx=O#470P!L_2^o?2Dol|1j7hZcRkS7YU5`#430sy5?0*~AvR z7miZhz8?HF=1)sZm2MSUw@aPhCHFe!^0-SNZlbj~Qr(rKd+y2-tI@1HF6ySc(&o9Z zn~BZw_1E_gJ(6m!g$cDvc*GgCX$qJaO?9j|a&CW)K74$>>=3h9`xmOodcf+FN4`fw zgRx`)B8(*O*xi>t4`yzvf5=jNW8NmlPUV;0M*zn=d1_RJ$OlLmmRL~v$+S`pC%A|?n*Ie=e`(XAvP9% z14~QO8Ev(*vhssiiI~F1*>&$CfuIjOFg!2+-}9f%%?IctqL_+MhYT+*A%xmo_IV!N zP0DOm8=J%RCd=I@n?asU;RG6$kQc_C={ARi3<(_)EZLwdM1(|y21Kq4wk~w5H9$Ab zWB8+2h5hd=+?mE@MNi${c=kF#f>TRV z%TwzpmBMNgbF9)-SfQj+;&Zz3R=gT4u;@QYPcsK|()(Xu_5uWyV-_1>xiW@ZCIvAP zJB}e$iMDocd3E>eyWoIyVd1HnX7!FY=Af+l>+#QTZvrHVN~r%LEjURib|S`_#zX-4 QU!$0RNPeuP=ME&%Z(WY$!vFvP literal 0 HcmV?d00001 diff --git a/Assets/StreamingAssets/yoo/Preload/Preload_2025-11-05-293.hash.meta b/Assets/StreamingAssets/yoo/Preload/Preload_2025-11-12-1073.bytes.meta similarity index 74% rename from Assets/StreamingAssets/yoo/Preload/Preload_2025-11-05-293.hash.meta rename to Assets/StreamingAssets/yoo/Preload/Preload_2025-11-12-1073.bytes.meta index 3aec3cb..2ab41c1 100644 --- a/Assets/StreamingAssets/yoo/Preload/Preload_2025-11-05-293.hash.meta +++ b/Assets/StreamingAssets/yoo/Preload/Preload_2025-11-12-1073.bytes.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 9463e3bb240e0f748ae1e1e7cf36302a +guid: 6bb98d3e5ae4c2a4c9d08a710d6aa4c6 DefaultImporter: externalObjects: {} userData: diff --git a/Assets/StreamingAssets/yoo/Preload/Preload_2025-11-12-1073.hash b/Assets/StreamingAssets/yoo/Preload/Preload_2025-11-12-1073.hash new file mode 100644 index 0000000..2aeb394 --- /dev/null +++ b/Assets/StreamingAssets/yoo/Preload/Preload_2025-11-12-1073.hash @@ -0,0 +1 @@ +d55c8b5b \ No newline at end of file diff --git a/Assets/StreamingAssets/yoo/Preload/Preload_2025-11-05-293.bytes.meta b/Assets/StreamingAssets/yoo/Preload/Preload_2025-11-12-1073.hash.meta similarity index 74% rename from Assets/StreamingAssets/yoo/Preload/Preload_2025-11-05-293.bytes.meta rename to Assets/StreamingAssets/yoo/Preload/Preload_2025-11-12-1073.hash.meta index e61202e..ef37ba1 100644 --- a/Assets/StreamingAssets/yoo/Preload/Preload_2025-11-05-293.bytes.meta +++ b/Assets/StreamingAssets/yoo/Preload/Preload_2025-11-12-1073.hash.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2147dd68f4ba43c47bf0015c6e7f9c44 +guid: 0389d7879276f2a4b88693887ea07df8 DefaultImporter: externalObjects: {} userData: diff --git a/Assets/StreamingAssets/yoo/Preload/preload_assets_gameres_preload_hotupdatedll.bundle b/Assets/StreamingAssets/yoo/Preload/preload_assets_gameres_preload_hotupdatedll.bundle index 8a14910a890237f42bb578f1fd8c2a753b12ae3c..d0a7e52af107d8a3e4f3ea77497edc1aaa45b514 100644 GIT binary patch delta 2447 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 Ng9YAts64OM{vU5>I1>N> diff --git a/Assets/StreamingAssets/yoo/Preload/preload_assets_gameres_preload_ui.bundle b/Assets/StreamingAssets/yoo/Preload/preload_assets_gameres_preload_ui.bundle index be8a478f339ccd768ad60c2e6772775b392b0f67..649db4e87c8f6d3f231948b5b441134fcf0a5161 100644 GIT binary patch delta 1322 zcmW+yaZD3;82x^Czw6zV>)p{4Tc83(6y^#&9osON!Dv~Lp%#r!SpqHS07XPv#VmEL z4ky!QR?it7OsgPcNF0I&B+;QE%BEY0aT|%EOg2UWnK-8onYy~azW2SneDA&QN9!$X zU=DhJ|J>Qs2!Qe0{-yb76(SAK{c>-lGEa`fe#Z8L9f_^HhH>8fT& za^kX1lKfg1H#~yzop+Q*OKDcekuAIBmUJn7o;tK2d$ETts;g42N5y!3GDxPGbcl_# z+MZ1xX-|;i%g{XasYXlknSxy3i8#su4VK3Xp1j%6EK>n+P3*6(JA1lH4-px9*uHnA z&$RShdk(mIx(eCO3%z=fDt4+5G+L(9+?mN&(!L{S$rYFPf&oD#@XTcn|rPx_0VDKEJPRC;VQ4 zf6hMoWsRv@U>P!Pc<0M$3t&zzN@q zNip=7J3@9r?HY#=7Lm9O`~hoj%o;}^Jc;mkd0)SqmgWqG=fEE8>8AAcrJ{BcT3^L& zRZX5pn`M-Sl=O?;m87}n!LK^rSke@e@CfMLKwUOLRiNEQv zZi>ni_=74{EyBY*Q^E3>BN!h+Ot5?^K^#{4;}&InJZrwoY%A8zcA29&n|bA8b0OzW zsj6Q0fwQLq(mNDoKfN|4rq9s1i}SgLxsk6#bUHD9R}1jLy8+wJ~QUf b9eTNPQ)QttWHh4$MH9b}5w-Rj06_l%-hz}y delta 1355 zcmXAmeM}Q~7{{OA-S2wWa=p89VhdE-@*+$tJq2Crhp<=T7_(# ztph<}i6V3<>OW`8{|d7kI{d7kI4 z{gyqPhKl#iPN4jtw}hYBj(Ie$?>u27G+tpGcufz6mUr(nrG5- zHs0=d@%(T&RZOlzb5v(KZS&5pEexIj$^{*^$pz0|@Ay=p!r*6D}Q(pKgsspiRm#VGP_B`8Xop(bR%0Z)64Xp$3&XZf7J^xlNi1i&H zAshM4saFH(-x+BMLf#8RclnRKvkE zHT^Z=`dSrdxdVGH?_E~np9(7_AY9P$@$lmpFJ4Njalriw(W--FKl!Jsaq4yn*V?lS z{-_b13>-aDZypfm-^0B_$e$6oTYQunP~U;wm)3qWF&Zmz2Uzknc;l|tZGW2KkwqJ1 zx@yxG?FMO_>qVi&GHpvrOOX?Kk56u`w)-W%G;&No7U(69yL}Z^?^M^mzomW# zuroJtsX*LR4?5hN*RQOotM>T3nI#(JBkapJyDOIzvVA#>5%^v(3C#CP)7V80v%q6(%6L<(@eui94= zLW%|!KUOFNAPOi08Yd|-7uxz>^1E+F=S-sXSTXM~mkvPz76bg#^jaLDg7~1i#CoQ? zI~N1114a)bVTDAzNX?tU#zlcOgF-@tlTJb|iaM3ZBS^^z=3!VkIT1OSWZ3W)CR!bY z5z~7e=nzBhaj5lxN=wOrgIf&>hUWhTT5ck72F@rmKSey`IYvni@pKWvR*@>K zWSocy@mdJ-%wvjU6--FU1eL_!bW9&bnR#x%LeYru0LRoQIm{AFkRYBaxh#Tci2P(+ znpZJvzSrW&k4^DfMAl(hwcL`+`Z7Ir>o>T|n+48Ea^oa_oro97!1BBbcezK+;SAu9 waB506??s#@8`Gvo2WN=J!AQHQfNs-CwOeX)BTq~ggd+*bimum!T