Esempio n. 1
0
/// <summary>
/// 生成md5文本文件
/// </summary>
    static void BuildFileIndex()
    {
        string resPath = Application.dataPath + "/StreamingAssets/";
        ///----------------------创建文件列表-----------------------
        string newFilePath = resPath + "/files.txt";

        if (File.Exists(newFilePath))
        {
            File.Delete(newFilePath);
        }

        paths.Clear(); files.Clear();
        Recursive(resPath);

        FileStream   fs = new FileStream(newFilePath, FileMode.CreateNew);
        StreamWriter sw = new StreamWriter(fs);

        for (int i = 0; i < files.Count; i++)
        {
            string file = files[i];
            string ext  = Path.GetExtension(file);
            if (file.EndsWith(".meta") || file.Contains(".DS_Store"))
            {
                continue;
            }

            string md5   = LuaConst.md5file(file);
            string value = file.Replace(resPath, string.Empty);
            sw.WriteLine(value + "|" + md5);
        }
        sw.Close(); fs.Close();
    }
Esempio n. 2
0
    public void Initialize()
    {
        Lua = new LuaEnv();
        Lua.AddBuildin("rapidjson", XLua.LuaDLL.Lua.LoadRapidJson);



        if (LuaConst.DebugMode == true)
        {
            string path = Application.dataPath + "/XLua/EasyXLua/ToBuild/lua/";
            GetAllFiles(new DirectoryInfo(path));
        }
        else
        {
            if (LuaConst.LuaBundleMode)
            {
                string      uri    = LuaConst.DataPath + "Lua.medsci";
                byte[]      stream = File.ReadAllBytes(uri);
                AssetBundle bundle = AssetBundle.LoadFromMemory(stream);
                TextAsset[] TA     = bundle.LoadAllAssets <TextAsset>();
                foreach (TextAsset t in TA)
                {
                    string luaDecrypt = LuaConst.Decrypt(t.text, "12345678", "56781234");
                    LuaDict.Add(t.name, System.Text.Encoding.UTF8.GetBytes(luaDecrypt));
                }
            }
            else
            {
                string path = LuaConst.DataPath + "/lua/";
                GetAllFiles(new DirectoryInfo(path));
            }
        }
        XLua.LuaEnv.CustomLoader CL = new XLua.LuaEnv.CustomLoader(GetLuaFiles);
        Lua.AddLoader(CL);
    }
Esempio n. 3
0
    /// <summary>
    /// 生成资源map
    /// </summary>
    static void AddBuildMap(string bundleName, string pattern, string path)
    {
        string[] files = Directory.GetFiles(path, pattern, SearchOption.AllDirectories);
        if (files.Length == 0)
        {
            return;
        }
        for (int i = 0; i < files.Length; i++)
        {
            files[i] = files[i].Replace('\\', '/');
            if (bundleName == "Lua.medsci")
            {
                string luafile = File.ReadAllText(files[i]);

                files[i] = files[i].Replace("/XLua/EasyXLua/ToBuild/Lua", "/XLua/EasyXLua/ToBuild/LuaEncrypt");
                try
                {
                    if (File.Exists(files[i]))
                    {
                        File.Delete(files[i]);
                    }
                    if (!Directory.Exists(Path.GetDirectoryName(files[i])))
                    {
                        Directory.CreateDirectory(Path.GetDirectoryName(files[i]));
                    }

                    FileStream fs   = File.Create(files[i]);
                    byte[]     temp = System.Text.Encoding.UTF8.GetBytes(LuaConst.Encrypt(luafile, "12345678", "56781234"));
                    fs.Write(temp, 0, temp.Length);
                    fs.Close();
                }
                catch (Exception e) {
                    Debug.LogError(e);
                }
            }
        }


        AssetBundleBuild build = new AssetBundleBuild();

        build.assetBundleName = bundleName;
        build.assetNames      = files;
        maps.Add(build);
    }
Esempio n. 4
0
    /// <summary>
    /// 是否要更新?
    /// </summary>
    IEnumerator OnCheckUpdateResource()
    {
        if (!LuaConst.UpdateMode)
        {
            OnResourceInited();
            yield break;
        }

        string dataPath = LuaConst.DataPath;  //数据目录
        string url      = LuaConst.WedUrl;
        string message  = string.Empty;
        string random   = DateTime.Now.ToString("yyyymmddhhmmss");
        string listUrl  = url + "files.txt?v=" + random;

        Debug.LogWarning("LoadUpdate---->>>" + listUrl);

        WWW www = new WWW(listUrl); yield return(www);

        if (www.error != null)
        {
            OnResourceInited();
            Debug.Log("连接更新服务器失败");
            yield return(new WaitForSeconds(1.5f));

            yield break;
        }
        if (!Directory.Exists(dataPath))
        {
            Directory.CreateDirectory(dataPath);
        }
        File.WriteAllBytes(dataPath + "files.txt", www.bytes);
        string filesText = www.text;

        string[] files = filesText.Split('\n');

        for (int i = 0; i < files.Length; i++)
        {
            if (string.IsNullOrEmpty(files[i]))
            {
                continue;
            }
            string[] keyValue  = files[i].Split('|');
            string   f         = keyValue[0];
            string   localfile = (dataPath + f).Trim();
            string   path      = Path.GetDirectoryName(localfile);
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            string fileUrl   = url + f + "?v=" + random;
            bool   canUpdate = !File.Exists(localfile);
            if (!canUpdate)
            {
                string remoteMd5 = keyValue[1].Trim();
                string localMd5  = LuaConst.md5file(localfile);
                canUpdate = !remoteMd5.Equals(localMd5);
                if (canUpdate)
                {
                    File.Delete(localfile);
                }
            }
            if (canUpdate)
            {
                willDownLoadUrl.Add(fileUrl);           //下载地址
                willDownLoadDestination.Add(localfile); //目标文件路径
                totalSize += GetHttpLength(fileUrl);
            }
        }

        if (willDownLoadUrl.Count > 0)
        {
            double tokbsize = Math.Round((float)totalSize / 1024, 2);
            Debug.Log("是否要下载文件大小为" + tokbsize);
            CommonUI.Instance.ShowCheck("是否更新", () => StartCoroutine(UpdateResources()), () => OnResourceInited());
            //TODO
        }
        else
        {
            CommonUI.Instance.ShowTips("已是最新版本");
            Debug.Log("已经是最新版本");
            OnResourceInited();
        }
    }