Exemple #1
0
//#if false
    public void Init(string msg)
    {
        h.Clear();
        gResVers = new VerData[AllRes.Length];
        for (int i = 0; i < AllRes.Length; i++)
        {
            gResVers[i]     = new VerData();
            gResVers[i].ver = 100000000;
        }
        transform.SendMessage(msg);
    }
Exemple #2
0
    static public bool CheckVer(int[] ver)
    {
        if (file != null)
        {
            file.Flush();
            file.Close();
            file = null;
        }

        bool needDown = false;

        NeedDownStep = new bool[ver.Length];

        MaxVer = 0;
        for (int i = 0; i < ver.Length; i++)
        {
            if (ver [i] > MaxVer)
            {
                MaxVer = ver [i];
            }

            VerData verOldData = gResVers [i];

            if (verOldData.ver < ver [i])
            {
                needDown         = true;
                NeedDownStep [i] = true;
            }
            else
            {
                NeedDownStep [i] = false;
            }
        }

        if (needDown)
        {
            string fileName = System.IO.Path.Combine(Application.persistentDataPath, "downinfo");
            if (File.Exists(fileName))
            {
                var filestr = System.IO.File.ReadAllText(fileName);

                string[] vers = filestr.Split(',');
                if ((vers [0].Length > 0) && (System.Convert.ToInt32(vers [0]) == MaxVer))
                {
                    DownStep = System.Convert.ToInt32(vers [1]);
                }
                else
                {
                    for (int i = 0; i < AllRes.Length; i++)
                    {
                        string delFile = System.IO.Path.Combine(Application.persistentDataPath, AllRes[i]);
                        File.Delete(delFile);
                    }

                    File.Delete(fileName);

                    DownStep = 0;
                }
            }
            else
            {
                DownStep = 0;
            }
        }

        return(needDown);
    }
Exemple #3
0
    IEnumerator InitFun(string msg)
    {
        // read ver streamingAssets
        var filePath = System.IO.Path.Combine(Application.streamingAssetsPath, "ver");
        var result   = "";

        if (filePath.Contains("://"))
        {
            var www = new WWW(filePath);
            yield return(www);

            result = www.text;
        }
        else
        {
            result = System.IO.File.ReadAllText(filePath);
        }


        var vers = new VerData[AllRes.Length];

        var resultLines = result.Split(',');

        for (int i = 0; i < vers.Length; i++)
        {
            VerData verData = new VerData();
            verData.ver    = System.Convert.ToInt32(resultLines[i]);
            verData.isDown = false;
            verData.name   = AllRes[i];
            vers [i]       = verData;
        }

        string fileName = System.IO.Path.Combine(Application.persistentDataPath, "ver");

        if (File.Exists(fileName))
        {
            result      = System.IO.File.ReadAllText(fileName);
            resultLines = result.Split(',');

            for (int i = 0; i < resultLines.Length; i++)
            {
                VerData verData = new VerData();
                verData.ver    = System.Convert.ToInt32(resultLines[i]);
                verData.isDown = true;
                verData.name   = AllRes [i];
                VerData verOldData = vers [i];
                if (verData.ver > verOldData.ver)
                {
                    vers[i] = verData;
                }
            }
        }


        SetProcess(10);
        if (h.ContainsKey("font") == false)
        {
            string      fileFont = System.IO.Path.Combine(Application.streamingAssetsPath, "font");
            AssetBundle ast;
            if (fileFont.Contains("://"))
            {
                var www = new WWW(fileFont);
                yield return(www);

                ast = www.assetBundle;
            }
            else
            {
                var a = AssetBundle.LoadFromFileAsync(fileFont);
                yield return(a);

                ast = a.assetBundle;
            }

            h.Add("font", ast);
        }


        for (int i = 0; i < vers.Length; i++)
        {
            var verData = vers [i];

            bool needDo = false;

            if (gResVers == null)
            {
                needDo = true;
            }
            else
            {
                VerData verOldData = gResVers[i];
                if (verData.ver > verOldData.ver)
                {
                    needDo = true;
                }
            }
            SetProcess((i + 1) * 90 / vers.Length + 10);
            if (needDo)
            {
                if (h.ContainsKey(AllRes [i]))
                {
                    AssetBundle a = h[AllRes [i]] as AssetBundle;

                    a.Unload(false);
                }


                AssetBundle assetBundle;
                if (verData.isDown)
                {
                    filePath    = System.IO.Path.Combine(Application.persistentDataPath, AllRes [i]);
                    assetBundle = AssetBundle.LoadFromFile(filePath);
                }
                else
                {
                    filePath = System.IO.Path.Combine(Application.streamingAssetsPath, AllRes[i]);

                    if (filePath.Contains("://"))
                    {
                        var www = new WWW(filePath);
                        yield return(www);

                        assetBundle = www.assetBundle;
                    }
                    else
                    {
                        var a = AssetBundle.LoadFromFileAsync(filePath);
                        yield return(a);

                        assetBundle = a.assetBundle;
                    }
                }

                if (h.ContainsKey(verData.name))
                {
                    h[verData.name] = assetBundle;
                }
                else
                {
                    h.Add(verData.name, assetBundle);
                }
            }
                        #if UNITY_EDITOR
            yield return(new WaitForSeconds(0.1f));
                        #endif
        }

        SetProcessEnd();

        gResVers = vers;

        transform.SendMessage(msg);
    }