From 93ab6fe56b327576fcaebbc7caa3ee8ea0fe3ff3 Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期五, 26 十月 2018 10:36:33 +0800
Subject: [PATCH] 4334 【前端】随包资源支持热更
---
Core/GameEngine/Model/ConfigManager.cs | 2
System/AssetVersion/AssetVersionUtility.cs | 22 +++++++++++
System/ClientVersion/VersionConfig.cs | 2
Core/GameEngine/Login/Launch.cs | 38 ++++++++++++-------
Core/ResModule/AssetBundle/AssetBundleUtility.cs | 8 ++-
Utility/FileExtersion.cs | 2 +
Core/SDK/SDKUtility.cs | 23 +++++++++++
7 files changed, 77 insertions(+), 20 deletions(-)
diff --git a/Core/GameEngine/Login/Launch.cs b/Core/GameEngine/Login/Launch.cs
index b464d2e..012aa47 100644
--- a/Core/GameEngine/Login/Launch.cs
+++ b/Core/GameEngine/Login/Launch.cs
@@ -13,11 +13,9 @@
static public LaunchStage currentStage { get { return m_CurrentStage; } }
static float m_Progress = 0f;
- static public float progress
- {
+ static public float progress {
get { return m_Progress; }
- set
- {
+ set {
if (m_Progress != value)
{
m_Progress = value;
@@ -56,22 +54,29 @@
GlobalTimeEvent.Instance.Begin();
#if UNITY_ANDROID && !UNITY_EDITOR
- var files = new List<FileInfo>();
- FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, "builtin"), files);
- foreach (var file in files)
+ if (!SDKUtility.Instance.builtinAssetCopyFinished)
{
- var name = Path.GetFileName(file.FullName);
- SDKUtility.Instance.CopyContent(StringUtility.Contact("builtin/",name ));
- }
+ SDKUtility.Instance.CopyContent("builtin_assetbundle");
+ SDKUtility.Instance.CopyContent("builtin_assetbundle.manifest");
+ SDKUtility.Instance.CopyContent("builtin/music");
+ SDKUtility.Instance.CopyContent("builtin/music.manifest");
+ SDKUtility.Instance.CopyContent("builtin/prefabs");
+ SDKUtility.Instance.CopyContent("builtin/prefabs.manifest");
+ SDKUtility.Instance.CopyContent("builtin/sprite");
+ SDKUtility.Instance.CopyContent("builtin/sprite.manifest");
+ SDKUtility.Instance.CopyContent("config/Contact");
+ SDKUtility.Instance.CopyContent("config/HelpInfo");
+ SDKUtility.Instance.CopyContent("config/PriorBundle");
+ SDKUtility.Instance.CopyContent("config/PriorLanguage");
- SDKUtility.Instance.CopyContent("builtin_assetbundle");
- SDKUtility.Instance.CopyContent("builtin_assetbundle.manifest");
+ LocalSave.SetString("BuiltInAssetCopyCompleted_Android", VersionConfig.Get().version);
+ }
#endif
#if UNITY_IOS && !UNITY_EDITOR
if (!VersionUtility.Instance.InIosAuditTime())
{
- if (!SDKUtility.Instance.AssetCopyFinished)
+ if (!SDKUtility.Instance.builtinAssetCopyFinished)
{
var targetDirectory = ResourcesPath.Instance.ExternalStorePath;
if (!Directory.Exists(targetDirectory))
@@ -99,9 +104,14 @@
}
}
}
+
+ LocalSave.SetString("BuiltInAssetCopyCompleted_IOS", VersionConfig.Get().version);
#endif
- AssetBundleUtility.Instance.InitBuiltInAsset();
+ if (!AssetSource.builtInFromEditor)
+ {
+ AssetBundleUtility.Instance.InitBuiltInAsset();
+ }
}
void Start()
diff --git a/Core/GameEngine/Model/ConfigManager.cs b/Core/GameEngine/Model/ConfigManager.cs
index adc8a4b..b2708af 100644
--- a/Core/GameEngine/Model/ConfigManager.cs
+++ b/Core/GameEngine/Model/ConfigManager.cs
@@ -522,7 +522,7 @@
switch (_assetPath)
{
case AssetPath.Resource:
- path = AssetVersionUtility.GetAssetFilePath(StringUtility.Contact("config/", fileName, ".txt"));
+ path = AssetVersionUtility.GetBuiltInAssetFilePath(StringUtility.Contact("config/", fileName, ".txt"));
if (File.Exists(path))
{
lines = File.ReadAllLines(path, Encoding.UTF8);
diff --git a/Core/ResModule/AssetBundle/AssetBundleUtility.cs b/Core/ResModule/AssetBundle/AssetBundleUtility.cs
index 92f0e3c..6b41e18 100644
--- a/Core/ResModule/AssetBundle/AssetBundleUtility.cs
+++ b/Core/ResModule/AssetBundle/AssetBundleUtility.cs
@@ -16,7 +16,7 @@
public void InitBuiltInAsset()
{
- var path = AssetVersionUtility.GetAssetFilePath("builtin_assetbundle");
+ var path = AssetVersionUtility.GetBuiltInAssetFilePath("builtin_assetbundle");
var assetBundle = AssetBundle.LoadFromFile(path);
if (assetBundle == null)
{
@@ -142,7 +142,8 @@
yield return Co_LoadAssetBundleDependenice(_assetBundleInfo);
}
- var filePath = AssetVersionUtility.GetAssetFilePath(assetBundleName);
+ var isBuiltin = assetBundleName.Contains("builtin");
+ var filePath = isBuiltin?AssetVersionUtility.GetBuiltInAssetFilePath(assetBundleName) : AssetVersionUtility.GetAssetFilePath(assetBundleName);
DebugEx.LogFormat("Co_LoadAssetBundle(): 灏嗚鍔犺浇鐨刟ssetBundle鍖呰矾寰� => {0}", filePath);
var assetBundle = AssetBundle.LoadFromFile(filePath);
@@ -316,7 +317,8 @@
Sync_LoadAssetBundleDependenice(_assetBundleInfo);
- string _path = AssetVersionUtility.GetAssetFilePath(assetBundleName);
+ var isBuiltin = assetBundleName.Contains("builtin");
+ string _path = isBuiltin ? AssetVersionUtility.GetBuiltInAssetFilePath(assetBundleName) : AssetVersionUtility.GetAssetFilePath(assetBundleName);
AssetBundle _assetBundle = AssetBundle.LoadFromFile(_path);
CacheAssetBundle(assetBundleName, _assetBundle);
diff --git a/Core/SDK/SDKUtility.cs b/Core/SDK/SDKUtility.cs
index ef7be37..28082b3 100644
--- a/Core/SDK/SDKUtility.cs
+++ b/Core/SDK/SDKUtility.cs
@@ -70,6 +70,8 @@
/// </summary>
public UnityAction<NetworkReachability> OnNetworkStatusChanged;
+ public bool builtinAssetCopyFinished { get; private set; }
+
/// <summary>
/// 鏄惁宸茬粡灏哠treamingAsset鎷疯礉鑷崇洰鏍囪矾寰�
/// </summary>
@@ -103,8 +105,27 @@
{
return;
}
-
+#if UNITY_ANDROID
+ var builtinAssetsCopyFinishVersion = LocalSave.GetString("BuiltInAssetCopyCompleted_Android");
+ if (string.IsNullOrEmpty(builtinAssetsCopyFinishVersion))
+ {
+ builtinAssetCopyFinished = false;
+ }
+ else
+ {
+ builtinAssetCopyFinished = VersionConfig.Get().version == builtinAssetsCopyFinishVersion;
+ }
+#endif
#if UNITY_IOS
+ var builtinAssetsCopyFinishVersion = LocalSave.GetString("BuiltInAssetCopyCompleted_IOS");
+ if (string.IsNullOrEmpty(builtinAssetsCopyFinishVersion))
+ {
+ builtinAssetCopyFinished = false;
+ }
+ else
+ {
+ builtinAssetCopyFinished = VersionConfig.Get().version == builtinAssetsCopyFinishVersion;
+ }
var assetsCopyFinishVersion = LocalSave.GetString("AssetCopyCompleted_IOS");
if (string.IsNullOrEmpty(assetsCopyFinishVersion))
diff --git a/System/AssetVersion/AssetVersionUtility.cs b/System/AssetVersion/AssetVersionUtility.cs
index 839617e..8fdbeea 100644
--- a/System/AssetVersion/AssetVersionUtility.cs
+++ b/System/AssetVersion/AssetVersionUtility.cs
@@ -184,6 +184,28 @@
}
return path;
+ }
+
+ public static string GetBuiltInAssetFilePath(string _assetKey)
+ {
+ var path = string.Empty;
+ if (Application.platform == RuntimePlatform.Android)
+ {
+ path = StringUtility.Contact(ResourcesPath.Instance.ExternalStorePath, _assetKey);
+ }
+ else
+ {
+ if (SDKUtility.Instance.builtinAssetCopyFinished)
+ {
+ path = StringUtility.Contact(ResourcesPath.Instance.ExternalStorePath, _assetKey);
+ }
+ else
+ {
+ path = StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, _assetKey);
+ }
+ }
+
+ return path;
}
public static bool IsUnpriorAssetDownLoadOk()
diff --git a/System/ClientVersion/VersionConfig.cs b/System/ClientVersion/VersionConfig.cs
index d149204..e1544e4 100644
--- a/System/ClientVersion/VersionConfig.cs
+++ b/System/ClientVersion/VersionConfig.cs
@@ -10,7 +10,7 @@
[CreateAssetMenu(menuName = "Config/VersionConfig")]
public class VersionConfig : ScriptableObject
{
- public const string VERSION_ALTERNATIVE = "0.0.0";
+ public const string VERSION_ALTERNATIVE = "99.99.99";
[SerializeField] public string m_AppId = string.Empty;
public string appId { get { return m_AppId; } }
diff --git a/Utility/FileExtersion.cs b/Utility/FileExtersion.cs
index 4992c67..9708c8c 100644
--- a/Utility/FileExtersion.cs
+++ b/Utility/FileExtersion.cs
@@ -29,6 +29,8 @@
public static void GetAllDirectoryFileInfos(string _path, List<FileInfo> _fileInfos)
{
+ UnityEngine.Debug.Log("GetAllDirectoryFileInfos path is :" + _path);
+
var directoryInfo = new DirectoryInfo(_path);
var allFileSystemInfos = directoryInfo.GetFileSystemInfos();
--
Gitblit v1.8.0