IEnumerator LoadOutResource() { while (true) { if (waitToLoadList.Count > 0) { WaitLoadStruct tStruct = waitToLoadList[0]; string realPath = StringTool.Append(ResourcePath.GetAppOutResourcePath(), "/", tStruct.assetPath); WWW tWww = new WWW(realPath); yield return(tWww); if (tWww.error != null) { DebugHelper.Log(StringTool.Append("加载资源错误----> ", tWww.error, "--->", realPath)); } else { if (tStruct.onResourceLoaded != null) { UnityEngine.Object asset = tWww.assetBundle.mainAsset; tStruct.onResourceLoaded(asset); tWww.assetBundle.Unload(false); } waitToLoadList.RemoveAt(0); } } yield return(new WaitForEndOfFrame()); } }
bool configDataLoaded = false; //标志位,控制是否加载过/ public void LoadConfigData() { if (configDataLoaded) { DebugHelper.Log("配置表已经加载过了"); return; } try{ Dictionary <string, MGAssetManager.ResourceInfoStruct> dic = MGAssetManager.newerResourceDic; foreach (KeyValuePair <string, MGAssetManager.ResourceInfoStruct> kvp in dic) { MGAssetManager.ResourceInfoStruct tStruct = kvp.Value; if (tStruct.resType != (int)MGAssetManager.ResourceType.Config) { continue; } } }catch (Exception e) { DebugHelper.Log(StringTool.Append("加载配置表发生错误", e.ToString())); } }
static Dictionary <string, ResourceInfoStruct> outResourceDic; //外部资源列表,更新目录/ /// <summary> /// 加载资源列表,并得到最新的资源列表. /// </summary> public static void LoadResourceList() { TextAsset text = Resources.Load(ResourcePath.LOCALRESOURCELISTPATH) as TextAsset; StringReader sr = new StringReader(text.text); try{ while (sr.Peek() != -1) { string line = sr.ReadLine(); string[] configArgs = line.Split(','); ResourceInfoStruct tStruct = new ResourceInfoStruct(); tStruct.resName = configArgs[0]; tStruct.filePath = configArgs[1]; tStruct.resType = int.Parse(configArgs[2]); tStruct.version = int.Parse(configArgs[3]); tStruct.resourcePathType = (int)ResourcePathType.Resource; localResourceDic.Add(tStruct.resName, tStruct); } } catch (Exception e) { DebugHelper.Log(StringTool.Append("加载本地资源列表错误 ----> " + e.ToString())); } finally { sr.Close(); } if (File.Exists(ResourcePath.OUTRESOURCELISTPATH)) { FileStream fs = File.OpenRead(ResourcePath.OUTRESOURCELISTPATH); byte[] bytes = new byte[fs.Length]; fs.Read(bytes, 0, (int)fs.Length); StringReader sr1 = new StringReader(Encoding.UTF8.GetString(bytes)); try{ while (sr1.Peek() != -1) { string line = sr1.ReadLine(); string[] configArgs = line.Split(','); ResourceInfoStruct tStruct = new ResourceInfoStruct(); tStruct.resName = configArgs[0]; tStruct.filePath = configArgs[1]; tStruct.resType = int.Parse(configArgs[2]); tStruct.version = int.Parse(configArgs[3]); tStruct.resourcePathType = (int)ResourcePathType.Streaming; localResourceDic.Add(tStruct.resName, tStruct); } } catch (Exception e) { DebugHelper.Log(StringTool.Append("加载外部资源列表错误 ----> ", e.ToString())); } finally { sr1.Close(); } } foreach (KeyValuePair <string, ResourceInfoStruct> kvp in localResourceDic) { if (outResourceDic.ContainsKey(kvp.Key)) { ResourceInfoStruct tStruct = outResourceDic[kvp.Key]; if (tStruct.version > kvp.Value.version) { newerResourceDic.Add(kvp.Key, tStruct); } else { newerResourceDic.Add(kvp.Key, kvp.Value); } } else { newerResourceDic.Add(kvp.Key, kvp.Value); } } foreach (KeyValuePair <string, ResourceInfoStruct> kvp in outResourceDic) { if (!localResourceDic.ContainsKey(kvp.Key)) { newerResourceDic.Add(kvp.Key, kvp.Value); } } }