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