示例#1
0
文件: AssetLoader.cs 项目: LynnPi/OF
    /// <summary>
    /// 读取本地资源列表,streaming asset目录里的
    /// </summary>
    private IEnumerator ReadBuiltinResourceList()
    {
        string infoPath = Path.Combine(Application.streamingAssetsPath, RuntimeSetting.FileInfoPath);

        BuiltinResourceList = new XmlResourceList();
        if (infoPath.Contains("://"))
        {
            using (WWW www = new WWW(infoPath)) {
                yield return(www);

                if (!string.IsNullOrEmpty(www.error))
                {
                    Debug.Log(www.error);
                    yield break;
                }
                BuiltinResourceList.ReadFromXml(www.text);
            }
        }
        else if (File.Exists(infoPath))
        {
            BuiltinResourceList.ReadFromXml(File.ReadAllText(infoPath));     //TODO:异常处理
        }
        else
        {
            Debug.Log(infoPath + " NOT FOUND");
        }
    }
示例#2
0
文件: AssetLoader.cs 项目: LynnPi/OF
    /// <summary>
    /// 加载远程资源列表
    /// </summary>
    /// <returns></returns>
    public static IEnumerator DownloadRemoteResourceList()
    {
#if STANDALONE
        string infoPath = Path.Combine(Application.streamingAssetsPath, RuntimeSetting.FileInfoPath);
        RemoteResourceList = new XmlResourceList();
        if (infoPath.Contains("://"))
        {
            using (WWW www = new WWW(infoPath)) {
                yield return(www);

                if (!string.IsNullOrEmpty(www.error))
                {
                    Debug.Log(www.error);
                    yield break;
                }
                RemoteResourceList.ReadFromXml(www.text);
            }
        }
        else if (File.Exists(infoPath))
        {
            RemoteResourceList.ReadFromXml(File.ReadAllText(infoPath));     //TODO:异常处理
        }
        else
        {
            Debug.Log(infoPath + " NOT FOUND");
        }
#else
        Uri uri = new Uri(RuntimeSetting.RemoteResourceUri, RuntimeSetting.FileInfoPath);
        using (WWW www = new WWW(uri.AbsoluteUri)) {
            yield return(www);

            if (!string.IsNullOrEmpty(www.error))
            {
                Debug.Log(www.error);
                yield break;
            }
            RemoteResourceList = new XmlResourceList();
            RemoteResourceList.ReadFromXml(www.text);
        }
#endif
    }
示例#3
0
文件: Launcher.cs 项目: LynnPi/OF
    /// <summary>
    /// 下载资源
    /// </summary>
    /// <returns></returns>
    private IEnumerator DownloadRemoteResource()
    {
        if (AssetLoader.RemoteResourceList.GetCount() <= 0)
        {
            yield break;
        }

        XmlResourceList.Item[] items     = AssetLoader.RemoteResourceList.GetAllItems();
        XmlResourceList        localList = new XmlResourceList();
        XmlResourceList        saveList  = new XmlResourceList();

        string localFileInfoPath_ = Path.Combine(Application.persistentDataPath, RuntimeSetting.FileInfoPath);

        if (File.Exists(localFileInfoPath_))
        {
            localList.ReadFromXml(File.ReadAllText(localFileInfoPath_));
            Debug.Log(localFileInfoPath_ + " EXIST");
            Debug.Log("Total:" + localList.GetCount());
        }
        else
        {
            Debug.Log(localFileInfoPath_ + " NOT EXIST");
        }

        ChildMaxNum = items.Length;
        ChildNowNum = 0;
        for (int i = 0; i < ChildMaxNum; i++)
        {
            XmlResourceList.Item item        = items[i];
            XmlResourceList.Item localItem   = localList.GetItem(item.Path);
            XmlResourceList.Item builtinItem = AssetLoader.BuiltinResourceList.GetItem(item.Path);
            if (item.Deleted)
            {
                ChildNowNum++;
                continue;
            }

            if (builtinItem != null && item.Version <= builtinItem.Version)
            {
                ChildNowNum++;
                saveList.AddToItems(item);
                continue;
            }
            if (localItem != null && item.Version <= localItem.Version)
            {
                ChildNowNum++;
                saveList.AddToItems(item);
                continue;
            }

            if (item.Path.Contains("fileinfo.xml"))
            {
                continue;
            }

            string readPath  = AssetLoader.GetResourceRemoteUrl(item.Path);
            string writePath = Path.Combine(Application.persistentDataPath, item.Path);

            yield return(StartCoroutine(DownloadToLocal(readPath, writePath)));

            if (!File.Exists(writePath))
            {
                Debug.LogError("Download file failed:" + readPath);
                yield break;
            }
            ChildNowNum++;
            saveList.AddToItems(item);
        }
        Utility.CreateDirByFilePath(localFileInfoPath_);
        saveList.Save(localFileInfoPath_);
        Debug.Log("Write new resource list: " + localFileInfoPath_);
    }