暂存修改 尝试添加热重载插件
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
// 在AssetBundleManager等资源管理器生成前,预先处理资源问题的管理器
|
||||
// 提前处理资源更新,服务器列表下载等一系列情况
|
||||
// 注:这个东西运作的时候,没有AssetBundle,没有Lua,不要试图做任何相关操作。
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using AssetUpdate;
|
||||
@ -17,28 +18,37 @@ public class AssetUpdateManager : MonoBehaviour
|
||||
private IAssetAsyncAction _currentAction;
|
||||
|
||||
public static Assembly dllAssembly { get; private set; }
|
||||
public static string channel { get; private set; }
|
||||
|
||||
private static string _channel;
|
||||
|
||||
public static string channel
|
||||
{
|
||||
get { return _channel; }
|
||||
private set { _channel = value; }
|
||||
}
|
||||
|
||||
public static string assetVersionUri { get; private set; }
|
||||
|
||||
public static bool useResources
|
||||
{
|
||||
get { return _useResources; }
|
||||
}
|
||||
|
||||
private static bool _useResources = true;
|
||||
|
||||
public AssetUpdateState state { get; private set; }
|
||||
public AssetUpdateError error { get; private set; }
|
||||
public static string assetUri { get; private set; }
|
||||
public static int assetVersion { get; private set; }
|
||||
public static string apkUri { get; private set; }
|
||||
public static string apkVersion { get; private set; }
|
||||
public AssetUpdateState state { get; private set; }
|
||||
public AssetUpdateError error { get; private set; }
|
||||
public static string assetUri { get; private set; }
|
||||
public static int assetVersion { get; private set; }
|
||||
public static string apkUri { get; private set; }
|
||||
public static string apkVersion { get; private set; }
|
||||
|
||||
public List<AssetDependencyItem> downloadList { get; private set; }
|
||||
public AssetDependencyInfo mainInfo { get; private set; }
|
||||
public List<AssetDependencyItem> downloadList { get; private set; }
|
||||
public AssetDependencyInfo mainInfo { get; private set; }
|
||||
public Dictionary<string, string> streamingPathInfo { get; private set; }
|
||||
|
||||
private const string currentVersionPref = "CurrentVersion";
|
||||
|
||||
|
||||
public static int LoadCurrentVersion()
|
||||
{
|
||||
var currentVersion = PlayerPrefs.GetInt(currentVersionPref, default(int));
|
||||
@ -49,6 +59,7 @@ public class AssetUpdateManager : MonoBehaviour
|
||||
if (int.TryParse(versionFile, out version))
|
||||
currentVersion = version;
|
||||
}
|
||||
|
||||
return currentVersion;
|
||||
}
|
||||
|
||||
@ -56,10 +67,10 @@ public class AssetUpdateManager : MonoBehaviour
|
||||
{
|
||||
PlayerPrefs.SetInt(currentVersionPref, assetVersion);
|
||||
}
|
||||
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
Debug.Log( "AssetUpdateManager Awake" );
|
||||
Debug.Log("AssetUpdateManager Awake");
|
||||
_useResources = false;
|
||||
AssetUpdateDownloaderTick.CreateInstance();
|
||||
if (!FirstSceneBg.instance)
|
||||
@ -80,7 +91,7 @@ public class AssetUpdateManager : MonoBehaviour
|
||||
|
||||
private void OnConfigLoad(WWW www)
|
||||
{
|
||||
var text = string.IsNullOrEmpty(www.error) ? www.text : string.Empty;
|
||||
var text = string.IsNullOrEmpty(www.error) ? www.text : string.Empty;
|
||||
var channelError = false;
|
||||
if (string.IsNullOrEmpty(text))
|
||||
channelError = true;
|
||||
@ -91,7 +102,7 @@ public class AssetUpdateManager : MonoBehaviour
|
||||
channelError = true;
|
||||
else
|
||||
{
|
||||
channel = lines[0].Trim();
|
||||
channel = lines[0].Trim();
|
||||
assetVersionUri = lines[1].Trim();
|
||||
if (string.IsNullOrEmpty(channel) || string.IsNullOrEmpty(assetVersionUri))
|
||||
channelError = true;
|
||||
@ -102,7 +113,8 @@ public class AssetUpdateManager : MonoBehaviour
|
||||
FirstSceneBg.instance.SetPublishText(extra);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (channelError)
|
||||
Debug.LogError("Unable to Parse Channel file! This is not recoverable!");
|
||||
else
|
||||
@ -110,21 +122,23 @@ public class AssetUpdateManager : MonoBehaviour
|
||||
// 清理上次执行残留的rawJsonText
|
||||
// 当前项目没有类似数据缓存库一样的类,暂时直接用静态传递
|
||||
assetUri = string.Empty;
|
||||
state = AssetUpdateState.GetUpdateInfo;
|
||||
state = AssetUpdateState.GetUpdateInfo;
|
||||
StartCurrentAction();
|
||||
}
|
||||
|
||||
FirstSceneBg.instance.ShowGameVersion();
|
||||
// 清理上次执行残留的rawJsonText
|
||||
// 当前项目没有类似数据缓存库一样的类,暂时直接用静态传递
|
||||
assetUri = string.Empty;
|
||||
state = AssetUpdateState.GetUpdateInfo;
|
||||
state = AssetUpdateState.GetUpdateInfo;
|
||||
StartCurrentAction();
|
||||
}
|
||||
|
||||
|
||||
private void Start()
|
||||
{
|
||||
// 特别处理Android Resume时期的诡异情况,该状况下,AssetBundle未被清空,但实际Bundle管理器已被析构
|
||||
AssetBundle.UnloadAllAssetBundles(true);
|
||||
Debug.Log("加载渠道文件" + _channelConfig);
|
||||
AssetUpdateDownloaderTick.instance.LoadStreamingAsset(_channelConfig, OnConfigLoad);
|
||||
}
|
||||
|
||||
@ -196,9 +210,10 @@ public class AssetUpdateManager : MonoBehaviour
|
||||
else
|
||||
jsonAssetInfo = JsonAssetInfo.Create(httpAction.jsonData);
|
||||
}
|
||||
|
||||
return jsonAssetInfo;
|
||||
}
|
||||
|
||||
|
||||
private void EndCurrentAction()
|
||||
{
|
||||
error = AssetUpdateError.UnknownError;
|
||||
@ -215,10 +230,10 @@ public class AssetUpdateManager : MonoBehaviour
|
||||
Debug.LogError("Failed to convert jsonData to JsonAssetInfo!");
|
||||
else
|
||||
{
|
||||
assetUri = jsonAssetInfo.assetUri;
|
||||
assetUri = jsonAssetInfo.assetUri;
|
||||
assetVersion = jsonAssetInfo.assetVersion;
|
||||
apkUri = jsonAssetInfo.apkUri;
|
||||
apkVersion = jsonAssetInfo.apkVersion;
|
||||
apkUri = jsonAssetInfo.apkUri;
|
||||
apkVersion = jsonAssetInfo.apkVersion;
|
||||
error = apkVersion == Application.version
|
||||
? AssetUpdateError.Success
|
||||
: AssetUpdateError.ApkUpdate;
|
||||
@ -242,9 +257,9 @@ public class AssetUpdateManager : MonoBehaviour
|
||||
var assetCompareAction = ConvertAction<AssetCompareAction>(_currentAction);
|
||||
if (assetCompareAction != null)
|
||||
{
|
||||
downloadList = assetCompareAction.downloadList;
|
||||
downloadList = assetCompareAction.downloadList;
|
||||
streamingPathInfo = assetCompareAction.streamingPathInfo;
|
||||
error = AssetUpdateError.Success;
|
||||
error = AssetUpdateError.Success;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -276,25 +291,25 @@ public class AssetUpdateManager : MonoBehaviour
|
||||
case AssetUpdateError.AssetJsonError:
|
||||
{
|
||||
LiteConfirmWin.Open("资源同步错误", "无法获得服务器文件版本号!\n请在网络通畅的情况下再次尝试!",
|
||||
new LiteConfirmButtonData("确定", RestartProcess));
|
||||
new LiteConfirmButtonData("确定", RestartProcess));
|
||||
}
|
||||
break;
|
||||
case AssetUpdateError.VersionDataError:
|
||||
{
|
||||
LiteConfirmWin.Open("资源清单错误", "无法获得正确的服务器文件清单!\n请在网络通畅的情况下再次尝试!",
|
||||
new LiteConfirmButtonData("确定", RestartProcess));
|
||||
new LiteConfirmButtonData("确定", RestartProcess));
|
||||
}
|
||||
break;
|
||||
case AssetUpdateError.DownloadError:
|
||||
{
|
||||
LiteConfirmWin.Open("资源下载错误", "无法下载所需文件!\n请在网络通畅的情况下再次尝试!",
|
||||
new LiteConfirmButtonData("确定", RestartProcess));
|
||||
new LiteConfirmButtonData("确定", RestartProcess));
|
||||
}
|
||||
break;
|
||||
case AssetUpdateError.FileCreateError:
|
||||
{
|
||||
LiteConfirmWin.Open("读写错误", "无法更新资源文件!\n请检查硬盘容量,并确保游戏拥有响应读写权限!",
|
||||
new LiteConfirmButtonData("确定", RestartProcess));
|
||||
new LiteConfirmButtonData("确定", RestartProcess));
|
||||
}
|
||||
break;
|
||||
case AssetUpdateError.ApkError:
|
||||
@ -313,7 +328,7 @@ public class AssetUpdateManager : MonoBehaviour
|
||||
{
|
||||
Debug.LogError(string.Format("Unhandled error type {0} in HandleStateError!", error));
|
||||
LiteConfirmWin.Open("网络错误", "无法获得服务器列表\n请在网络通畅的情况下再次尝试!",
|
||||
new LiteConfirmButtonData("确定", RestartProcess));
|
||||
new LiteConfirmButtonData("确定", RestartProcess));
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -336,9 +351,9 @@ public class AssetUpdateManager : MonoBehaviour
|
||||
public static void OpenApkUri(string uri)
|
||||
{
|
||||
LiteConfirmWin.Open("安装包更新", "点击确定从商店下载最新版本的游戏安装包!\n" + uri,
|
||||
new LiteConfirmButtonData("确定", () => OnApkUpdateConfirm(uri)));
|
||||
new LiteConfirmButtonData("确定", () => OnApkUpdateConfirm(uri)));
|
||||
}
|
||||
|
||||
|
||||
private void RestartProcess()
|
||||
{
|
||||
SceneHub.LoadScene(SceneHub.GetActiveScene().name);
|
||||
@ -370,6 +385,7 @@ public class AssetUpdateManager : MonoBehaviour
|
||||
private void TryToEndProcess()
|
||||
{
|
||||
// if (_complete && _ui.complete) EndProcess();
|
||||
GameObject.DestroyObject(this);
|
||||
if (state == AssetUpdateState.Complete)
|
||||
StartGame();
|
||||
}
|
||||
|
Reference in New Issue
Block a user