/// <summary> /// 根据AppResConfig进行更新 /// </summary> public void UpdateByAppResConfig(ResConfigFile _appConfig) { if (_appConfig.ResVersion < ResVersion) { return; } for (Int32 i = 0; i < _appConfig.m_assets.Count; ++i) { ResInfo localResInfo; var appResInfo = _appConfig.m_assets[i]; if (ResDictionary.TryGetValue(appResInfo.Name, out localResInfo)) { if (appResInfo.Version > localResInfo.Version) { appResInfo.CopyTo(localResInfo); localResInfo.Location = AssetLocation.StreamingPath; } } else { localResInfo = appResInfo.Clone(); localResInfo.Location = AssetLocation.StreamingPath; m_assets.Add(localResInfo); ResDictionary.Add(localResInfo.Name, localResInfo); } } Save(); }
/// <summary> /// 获取更新列表 /// </summary> /// <param name="_appConfig"></param> /// <param name="_serverConfig"></param> /// <param name="_updateList"></param> /// <returns>更新文件大小(字节)</returns> public Int64 GetUpdateList(ResConfigFile _appConfig, ResConfigFile _serverConfig, out LinkedList <ResInfo> _updateList, out Boolean _localConfigUpdated) { _localConfigUpdated = false; Int64 updateSize = 0; _updateList = new LinkedList <ResInfo>(); for (Int32 i = 0; i < _serverConfig.m_assets.Count; ++i) { var srvResInfo = _serverConfig.m_assets[i]; ResInfo localResInfo; ResDictionary.TryGetValue(srvResInfo.Name, out localResInfo); ResInfo appResInfo; _appConfig.ResDictionary.TryGetValue(srvResInfo.Name, out appResInfo); // 无需更新 if (localResInfo != null && !localResInfo.NeedUpdate(srvResInfo)) { continue; } if (appResInfo != null && !appResInfo.NeedUpdate(srvResInfo)) { localResInfo = appResInfo.Clone(); localResInfo.Location = AssetLocation.StreamingPath; AddOrUpdateResInfo(localResInfo); Save(); _localConfigUpdated = true; } else { localResInfo = srvResInfo.Clone(); localResInfo.Location = AssetLocation.PersistentPath; _updateList.AddLast(localResInfo); updateSize += localResInfo.Size; } } return(updateSize); }
/// <summary> /// 尝试获取AssetInfo /// </summary> /// <param name="_name">Asset名称</param> /// <param name="_res_info">返回的AssetInfo</param> /// <returns></returns> public Boolean TryGetAssetInfo(String _name, out ResInfo _res_info) { return(ResDictionary.TryGetValue(_name, out _res_info)); }