This commit is contained in:
2025-11-12 18:39:09 +08:00
parent f615d8ddb0
commit 430fc90ade
37 changed files with 671 additions and 151 deletions

View File

@@ -655,7 +655,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
MainCamera: {fileID: 330585545}
PlayMode: 0
PlayMode: 2
--- !u!4 &1019312449
Transform:
m_ObjectHideFlags: 0

View File

@@ -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();
}
}
}

View File

@@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: d9170e9f660395d47b0f02466e5fd091

View File

@@ -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<GameObject>("GameStart");
await assetHandle.ToUniTask();
if (assetHandle.Status == EOperationStatus.Succeed)
{
assetHandle.ActivateScene();
PatchEvent.ClosePatchWindow();
}
GameObject.Instantiate(assetHandle.AssetObject);
}
}
}

View File

@@ -6,7 +6,8 @@
"GUID:f51ebe6a0ceec4240a699833d6309b23",
"GUID:3fe1a3e70da50184f9897101cad7e4f2",
"GUID:13ba8ce62aa80c74598530029cb2d649",
"GUID:928f8a513cd12e84cb0d3c0a21a84e2f"
"GUID:928f8a513cd12e84cb0d3c0a21a84e2f",
"GUID:3de88c88fbbb8f944b9210d496af9762"
],
"includePlatforms": [],
"excludePlatforms": [],

View File

@@ -1,9 +1,16 @@
using IngameDebugConsole;
using UnityEngine;
namespace Tuan.GameFramework
{
public class GameManager : Singleton<GameManager>
{
[ConsoleMethod("clear_prefs", "Clears all PlayerPrefs data")]
public static void ClearPlayerPrefs()
{
PlayerPrefs.DeleteAll();
PlayerPrefs.Save();
Debug.Log("<color=orange>All PlayerPrefs have been cleared!</color>");
}
}
}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1415f0f3bff6246479ccd70546d6403f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -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:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 7f51088fc82de064d9196043423bfedc
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -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

View File

@@ -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

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: aa0881160fd3b894280d93f1eb0876ce
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -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 <AssetLoad>
{
Dictionary<string, AssetHandle> assetHandles = new Dictionary<string, AssetHandle>();
public async UniTask<T> LoadAsync<T>(string name)where T: Object
{
if (!assetHandles.ContainsKey(name))
{
AssetHandle handle = YooAssets.LoadAssetAsync<T>(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<T>(string name) where T : Object
{
if (!assetHandles.ContainsKey(name))
{
AssetHandle handle = YooAssets.LoadAssetSync<T>(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;
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 44bc8a9986f966a4ebae93b30342d02f

View File

@@ -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<GameSceneManager>
{
Dictionary<string, SceneHandle> sceneHandles = new Dictionary<string, SceneHandle>();
public async UniTask LoadSceneAsync(string sceneName)
{
SceneHandle sceneHandle = null;
LoadingWindow loadingWindow = await UIManager.Inst.ShowUIAsync<LoadingWindow>($"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<LoadingWindow>($"Loading{sceneName}", MainUICanvas.Inst.Medium, true);
sceneHandle = YooAssets.LoadSceneSync("Test");
sceneHandles[sceneName] = sceneHandle;
}
else
{
sceneHandle = sceneHandles[sceneName];
}
sceneHandle.ActivateScene();
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: ce14e279825befb4e8d30f8929445030

View File

@@ -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<SimpleR3Test>("test1", MainUICanvas.Inst.Medium);
_ = LoadSceneTest();
// _ = FrameSplittingTest(1);
SimpleR3Test ui = await UIManager.Inst.ShowUIAsync<SimpleR3Test>("test1", MainUICanvas.Inst.Medium);
UIManager.Inst.CloseUI(ui);
await UIManager.Inst.ShowUIAsync<SimpleR3Test>("test2", MainUICanvas.Inst.Medium);
await UIManager.Inst.ShowUIAsync<SimpleR3Test>("test3", MainUICanvas.Inst.Medium);
await UIManager.Inst.ShowUIAsync<SimpleR3Test>("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");
}
}
}

View File

@@ -0,0 +1,16 @@
using System;
using UnityEngine;
using UnityEngine.UI;
using Tuan.GameScripts.Main;
public class LoadingWindow : UIBase,IProgress<float>
{
public Slider slider;
public Text progressText;
public void Report(float value)
{
slider.value = value;
progressText.text = $"{value * 100:F0}%";
Debug.Log($"{gameObject.name};{value}");
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: b0cfeb8d9ed2b7d45841727433c72b07

View File

@@ -10,8 +10,7 @@ namespace Tuan.GameScripts.Main
public class UIManager : Singleton<UIManager>
{
Dictionary<string, UIBase> openedUIs = new Dictionary<string, UIBase>();
Dictionary<string, AssetHandle> assetHandles = new Dictionary<string, AssetHandle>();
Stack<UIBase> uiStack = new Stack<UIBase>();
LinkedList<UIBase> uiLinkedList = new LinkedList<UIBase>();
public T ShowUI<T>(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<GameObject>(uiType);
ui = CreateUI<T>(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<T> ShowUIAsync<T>(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<GameObject>(uiType);
ui = CreateUI<T>(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<T>(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<GameObject>(uiType);
assetHandles.Add(uiType, uiHandle);
return (GameObject)uiHandle.AssetObject;
}
else
{
AssetHandle uiHandle = assetHandles[uiType];
return (GameObject)uiHandle.AssetObject;
}
}
async UniTask<GameObject> LoadUIAsync(string uiType)
{
if (!assetHandles.ContainsKey(uiType))
{
AssetHandle uiHandle = YooAssets.LoadAssetAsync<GameObject>(uiType);
await uiHandle.ToUniTask();
assetHandles.Add(uiType, uiHandle);
return (GameObject)uiHandle.AssetObject;
}
else
{
AssetHandle uiHandle = assetHandles[uiType];
return (GameObject)uiHandle.AssetObject;
}
}
#region UIBase的
Dictionary<string, GameObject> testOpenedUIs = new Dictionary<string, GameObject>();
Stack<GameObject> testUIStack = new Stack<GameObject>();
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<GameObject> 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<RectTransform>();
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
}
}

View File

@@ -22,5 +22,8 @@
<Group GroupActiveRule="EnableGroup" GroupName="InputActions" GroupDesc="" AssetTags="">
<Collector CollectPath="Assets/GameRes/Main/InputActions" CollectGUID="b97f97e936caa3243b69996ed03e9a7b" CollectType="MainAssetCollector" AddressRule="AddressByFileName" PackRule="PackSeparately" FilterRule="CollectAll" UserData="" AssetTags="" />
</Group>
<Group GroupActiveRule="EnableGroup" GroupName="Prefab" GroupDesc="" AssetTags="">
<Collector CollectPath="Assets/GameRes/Main/Prefab" CollectGUID="1415f0f3bff6246479ccd70546d6403f" CollectType="MainAssetCollector" AddressRule="AddressByFileName" PackRule="PackSeparately" FilterRule="CollectAll" UserData="" AssetTags="" />
</Group>
</Package>
</root>

View File

@@ -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:

View File

@@ -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"
},
{

View File

@@ -1 +1 @@
2025-11-05-293
2025-11-12-1073

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 9463e3bb240e0f748ae1e1e7cf36302a
guid: 6bb98d3e5ae4c2a4c9d08a710d6aa4c6
DefaultImporter:
externalObjects: {}
userData:

View File

@@ -0,0 +1 @@
d55c8b5b

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 2147dd68f4ba43c47bf0015c6e7f9c44
guid: 0389d7879276f2a4b88693887ea07df8
DefaultImporter:
externalObjects: {}
userData:

View File

@@ -26,7 +26,7 @@ namespace TMPro.Examples
{
TMP_FontAsset fontAsset = null;
// Create Dynamic Font Asset for the given font file.
// Create Dynamic Font AssetLoad for the given font file.
switch (Benchmark)
{
case BenchmarkType.TMP_SDF_MOBILE:

View File

@@ -22,7 +22,7 @@ namespace TMPro.Examples
m_textMeshPro.autoSizeTextContainer = true;
// Load the Font Asset to be used.
// Load the Font AssetLoad to be used.
//m_FontAsset = Resources.Load("Fonts & Materials/LiberationSans SDF", typeof(TMP_FontAsset)) as TMP_FontAsset;
//m_textMeshPro.font = m_FontAsset;