Exemple #1
0
    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()));
        }
    }
Exemple #3
0
    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);
            }
        }
    }