This commit is contained in:
DESKTOP-5RP3AKU\Jisol
2024-10-16 02:48:23 +08:00
parent 9cd469b811
commit 44c3ea001a
146 changed files with 28324 additions and 11203 deletions

View File

@@ -0,0 +1,19 @@
{
"name": "HotMain",
"rootNamespace": "",
"references": [
"GUID:f51ebe6a0ceec4240a699833d6309b23",
"GUID:e34a5702dd353724aa315fb8011f08c3",
"GUID:23aed7c57bb0a5d49aeaef92abb5bfff",
"GUID:13ba8ce62aa80c74598530029cb2d649"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 00b62574639528e40bdd0ce0d013db67
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -38,7 +38,7 @@ RenderSettings:
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1}
m_IndirectSpecularColor: {r: 0.12731749, g: 0.13414757, b: 0.1210787, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
@@ -147,14 +147,15 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 67180524}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1371077986}
- {fileID: 296179531}
m_Father: {fileID: 0}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &67180526
MonoBehaviour:
@@ -168,7 +169,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: f47aaf5c712947a69bb25051c81a1be1, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &790008994
--- !u!1 &296179530
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -176,92 +177,42 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 790008996}
- component: {fileID: 790008995}
- component: {fileID: 296179531}
- component: {fileID: 296179532}
m_Layer: 0
m_Name: Directional Light
m_Name: UI
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!108 &790008995
Light:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 790008994}
m_Enabled: 1
serializedVersion: 10
m_Type: 1
m_Shape: 0
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
m_Intensity: 1
m_Range: 10
m_SpotAngle: 30
m_InnerSpotAngle: 21.80208
m_CookieSize: 10
m_Shadows:
m_Type: 2
m_Resolution: -1
m_CustomResolution: -1
m_Strength: 1
m_Bias: 0.05
m_NormalBias: 0.4
m_NearPlane: 0.2
m_CullingMatrixOverride:
e00: 1
e01: 0
e02: 0
e03: 0
e10: 0
e11: 1
e12: 0
e13: 0
e20: 0
e21: 0
e22: 1
e23: 0
e30: 0
e31: 0
e32: 0
e33: 1
m_UseCullingMatrixOverride: 0
m_Cookie: {fileID: 0}
m_DrawHalo: 0
m_Flare: {fileID: 0}
m_RenderMode: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingLayerMask: 1
m_Lightmapping: 4
m_LightShadowCasterMode: 0
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 1
m_ColorTemperature: 6570
m_UseColorTemperature: 0
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
m_UseBoundingSphereOverride: 0
m_UseViewFrustumForShadowCasterCull: 1
m_ShadowRadius: 0
m_ShadowAngle: 0
--- !u!4 &790008996
--- !u!4 &296179531
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 790008994}
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
m_LocalPosition: {x: 0, y: 3, z: 0}
m_GameObject: {fileID: 296179530}
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_RootOrder: 0
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
m_Father: {fileID: 67180525}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &296179532
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 296179530}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a847b1151d044df183a7ab4fe052112f, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &1371077985
GameObject:
m_ObjectHideFlags: 0
@@ -286,13 +237,13 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1371077985}
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: 67180525}
m_RootOrder: -2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1371077987
MonoBehaviour:
@@ -314,7 +265,7 @@ MonoBehaviour:
- HotMain.SHGame.Procedure.ProcedureUpdatePackageManifest
- HotMain.SHGame.Procedure.ProcedureUpdatePackageVersion
m_EntranceProcedureTypeName: HotMain.SHGame.Procedure.ProcedureInitializePackage
--- !u!1 &1371947665
--- !u!1 &1460349557
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -322,34 +273,39 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1371947668}
- component: {fileID: 1371947667}
- component: {fileID: 1371947666}
- component: {fileID: 1460349560}
- component: {fileID: 1460349559}
- component: {fileID: 1460349558}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Name: Stage Camera
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!81 &1371947666
AudioListener:
--- !u!114 &1460349558
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1371947665}
m_GameObject: {fileID: 1460349557}
m_Enabled: 1
--- !u!20 &1371947667
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 367e80e3fa958344491a9a196a902b72, type: 3}
m_Name:
m_EditorClassIdentifier:
constantSize: 1
--- !u!20 &1460349559
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1371947665}
m_GameObject: {fileID: 1460349557}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 1
m_ClearFlags: 3
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_projectionMatrixMode: 1
m_GateFitMode: 2
@@ -371,40 +327,40 @@ Camera:
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
near clip plane: -30
far clip plane: 30
field of view: 60
orthographic: 0
orthographic: 1
orthographic size: 5
m_Depth: -1
m_Depth: 1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_Bits: 32
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_TargetEye: 0
m_HDR: 0
m_AllowMSAA: 0
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!4 &1371947668
--- !u!4 &1460349560
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1371947665}
m_GameObject: {fileID: 1460349557}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1, z: -10}
m_LocalPosition: {x: 8.688524, y: -5, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1994723394
GameObject:
@@ -450,11 +406,18 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1994723394}
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_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
m_Roots:
- {fileID: 1460349560}
- {fileID: 67180525}
- {fileID: 1994723396}

View File

@@ -0,0 +1,14 @@
namespace HotMain
{
public class HotMainEvent
{
/// <summary>
/// 开始下载资源
/// </summary>
public static string StartDownloader = "HotMainEvent_StartDownloader";
/// <summary>
/// 下载资源中进度更新 totalCount, currentCount, totalBytes, currentBytes
/// </summary>
public static string DownloaderProgressUpdate = "HotMainEvent_DownloaderProgressUpdate";
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 426c2f9b87234b1c962c020f4ed21c68
timeCreated: 1729012045

View File

@@ -21,7 +21,7 @@ namespace HotMain.SHGame.Procedure
//热更新的dll名称
public static readonly string[] HotDllName =
{
"HotSamples.dll"
"HotSamples.dll",
};
public static readonly string[] AotMetaAssemblyFiles =

View File

@@ -21,11 +21,34 @@ namespace HotMain.SHGame.Procedure
private async UniTask CreatePackageDownloader(IFsm<IProcedureManager> procedureOwner)
{
// 打包时内置在包体内的资源 直接先使用包体资源,实例化 登录加载界面后,再去检查是否需要下载更新
//加载AOT
await LoadMetadataForAOTAssemblies();
//加载GameLauncher dll
#if !UNITY_EDITOR
_launcherAss = await LoadHotfixDll(ProcedureInitializePackage.RawFilePackageName, "GameLauncher.dll");
#else
_launcherAss = AppDomain.CurrentDomain.GetAssemblies().First(a => a.GetName().Name == "GameLauncher");
Log.Warning("加载热更dllGameLauncher.dll");
#endif
//切换到更新资源版本
ChangeState<ProcedurePackageDownloader>(procedureOwner);
}
public static async UniTask<Assembly> LoadHotfixDll(string packageName, string name)
{
Log.Warning($"加载热更dll{name}");
var package = YooAssets.GetPackage(packageName);
var handle = package.LoadRawFileAsync(name);
await handle.ToUniTask();
var dllBytes = handle.GetRawFileData();
var assembly = Assembly.Load(dllBytes);
Log.Warning($"加载热更dll完成{name}");
return assembly;
}

View File

@@ -1,7 +1,10 @@
using Cysharp.Threading.Tasks;
using System;
using Cysharp.Threading.Tasks;
using SHFrame;
using SHFrame.FSM;
using UnityEngine;
using YooAsset;
using EventArgs = SHFrame.EventArgs;
namespace HotMain.SHGame.Procedure
{
@@ -12,27 +15,71 @@ namespace HotMain.SHGame.Procedure
private int totalDownloadCount = 0;
private long totalDownloadBytes = 0;
private IFsm<IProcedureManager> Procedure;
private bool isStartDownloader = false;
protected override void OnEnter(IFsm<IProcedureManager> procedureOwner)
{
Procedure = procedureOwner;
base.OnEnter(procedureOwner);
launcherPatchCount = 0;
totalDownloadCount = 0;
totalDownloadBytes = 0;
Download(procedureOwner);
//监听开始下载
EventUtil.AddListener(HotMainEvent.StartDownloader,OnStartDownloader);
//打开Launcher
RunLauncher().Forget();
}
protected override void OnLeave(IFsm<IProcedureManager> procedureOwner, bool isShutdown)
{
base.OnLeave(procedureOwner, isShutdown);
EventUtil.RemoveListener(HotMainEvent.StartDownloader,OnStartDownloader);
}
public async UniTask RunLauncher()
{
//打开LauncherMain
var package = YooAssets.GetPackage(ProcedureInitializePackage.DefaultPackageName);
var handle = package.LoadAssetAsync<GameObject>("HotLauncher");
await handle.ToUniTask();
var hotLauncher = handle.InstantiateSync();
hotLauncher.name = $"HotLauncher_{package.GetPackageVersion()}";
}
private void OnStartDownloader(EventArgs eventargs)
{
Download(Procedure);
}
private async void Download(IFsm<IProcedureManager> procedureOwner)
{
// //检查launcher标签的资源
// launcherPatchCount += TryGetTagPatchCount(ProcedureInitializePackage.RawFilePackageName, YooTag.LAUNCHER);
// launcherPatchCount += TryGetTagPatchCount(ProcedureInitializePackage.DefaultPackageName, YooTag.LAUNCHER);
//
// if (launcherPatchCount > 0)
// {
// Log.Warning("launcher资源需要更新下载完成后需要重启游戏");
// totalDownloadCount += launcherPatchCount;
// }
if (isStartDownloader) return;
isStartDownloader = true;
//检查launcher标签的资源
launcherPatchCount += TryGetTagPatchCount(ProcedureInitializePackage.RawFilePackageName, "Launcher");
launcherPatchCount += TryGetTagPatchCount(ProcedureInitializePackage.DefaultPackageName, "Launcher");
if (launcherPatchCount > 0)
{
Log.Warning("launcher资源需要更新下载完成后需要重启游戏");
totalDownloadCount += launcherPatchCount;
}
// 完全通过远端获取的资源,每次启动游戏都检查是否需要更新
//TODO 把这个玩意拆分成 1、获取下载文件大小2、提示总的下载大小提示确认3、开始下载
@@ -72,6 +119,7 @@ namespace HotMain.SHGame.Procedure
//切换到加载热更包入口
ChangeState<ProcedureLoadHot>(procedureOwner);
}
private int TryGetTagPatchCount(string packageName, string tag)
@@ -174,6 +222,7 @@ namespace HotMain.SHGame.Procedure
/// <exception cref="NotImplementedException"></exception>
private void OnDownloadProgressUpdateFunction(int totalCount, int currentCount, long totalBytes, long currentBytes)
{
EventUtil.DispatchEvent(HotMainEvent.DownloaderProgressUpdate,totalCount,currentCount,totalBytes,currentBytes);
Log.Debug($"文件总数:{totalCount}, 已下载文件数:{currentCount}, 下载总大小:{totalBytes}, 已下载大小:{currentBytes}");
}

View File

@@ -1,4 +1,5 @@
using System.IO;
using Cysharp.Threading.Tasks;
using UnityEngine;
using YooAsset;
@@ -86,4 +87,5 @@ namespace HotMain.SHGame.YooAsset
return 1024;
}
}
}