/// <summary> /// ファイルバージョン情報を追加 /// </summary> /// <param name="elements">ファイル情報の配列</param> public void addInfos(ABVersionInfo info, Info.ResourceType type) { if (info == null) { return; } ABVersionInfo.Element[] elements = info.elements; if (elements == null) { return; } foreach (var element in elements) { string key = element.name; // バージョンが上の情報を残す // バージョンが同じ場合ローカルを優先させて残す(余計な取得を無くす) bool contains = mergedVersionInfos.ContainsKey(key); if (!contains || (element.version > mergedVersionInfos[key].element.version) || (type == Info.ResourceType.LOCAL && element.version == mergedVersionInfos[key].element.version)) { mergedVersionInfos[key] = new Info(element, type); } } }
void readVersionInfosFromLocal(string path) { if (!File.Exists(path)) { Debug.Log("ファイル[" + path + "]が開けません"); return; } string text = File.ReadAllText(path); var versionInfos = JsonUtility.FromJson <ABVersionInfo>(text); Debug.Log("ローカルバージョン情報取得成功"); #if DEBUG_OUTPUT_VERSION_FILE_INFO Debug.Log("ファイルバージョン[" + versionInfos.version + "]"); foreach (var info in versionInfos.elements) { Debug.Log(info.name + "[" + info.version.ToString() + "]"); } #endif localVersionInfos = versionInfos; }
IEnumerator readVersionInfosFromRemote(string url) { UnityWebRequest request = UnityWebRequest.Get(url); yield return(request.SendWebRequest()); if (request.isNetworkError || request.isHttpError) { Debug.Log(request.error); } else { var versionInfos = JsonUtility.FromJson <ABVersionInfo>(request.downloadHandler.text); Debug.Log("リモートバージョン情報取得成功"); #if DEBUG_OUTPUT_VERSION_FILE_INFO Debug.Log("ファイルバージョン[" + versionInfos.version + "]"); foreach (var info in versionInfos.elements) { Debug.Log(info.name + "[" + info.version.ToString() + "]"); } #endif remoteVersionInfos = versionInfos; } }
public IEnumerator readVersionInfos(string localPath = null, string remoteUrl = null) { isReady = false; remoteVersionInfos = null; localVersionInfos = null; // リモートとローカルからバージョン情報ファイルを取得 if (remoteUrl != null) { yield return(readVersionInfosFromRemote(combineUrl(remoteUrl, VERSION_INFO_FILE_NAME))); } if (localPath != null) { readVersionInfosFromLocal(Path.Combine(Application.streamingAssetsPath, Path.Combine(localPath, VERSION_INFO_FILE_NAME))); } addInfos(remoteVersionInfos, Info.ResourceType.REMOTE); addInfos(localVersionInfos, Info.ResourceType.LOCAL); //確認用でここに入れてみる //yield return updateAssetBundles(REMOTE_RESOURCE_URL); isReady = true; }