Ejemplo n.º 1
0
    // 解压 streaming upk 包
    public void UnpackStreaming()
    {
        state = STATE.UNPACK_FIRST_UPK;

        hotUI.HOT_InitUnpackStream();

        //清空数据目录
        if (Directory.Exists(Util.DataPath))
        {
            Directory.Delete(Util.DataPath, true);
        }
        Directory.CreateDirectory(Util.DataPath);

        // 设备内存判断
        if (PGameTools.GetStorageSize() < UnpackStreamingUpkMemorySize)
        {
            hotUI.OutOfMemory(UnpackStreamingUpkMemorySize);
            return;
        }
        // 解 streaming upk 包
        string infoFilePath = Path.Combine(Util.AppContentPath(), "streaming.txt");
        string upkFilePath  = Path.Combine(Util.AppContentPath(), "streaming.upk");

        UPKEngine.UnpackStreaming(infoFilePath, upkFilePath, Util.DataPath, this);
    }
Ejemplo n.º 2
0
    public static void BuildFirstUPK()
    {
        // 版本路径
        string versionPath = GetVersionBundlePath();

        // 资源路径
        string assetPath = Replace(string.Format("{0}{1}{2}", versionPath, Path.DirectorySeparatorChar, "first"));

        // 资源路径
        string firstUpkPath = Replace(string.Format("{0}{1}{2}", versionPath, Path.DirectorySeparatorChar, "first_upk"));

        // upk 资源路径
        string UPKPath = Replace(string.Format("{0}{1}{2}", assetPath, Path.DirectorySeparatorChar, "files.upk"));

        // UPK Info 资源路径
        string streamingAssetPath = Replace(string.Format("{0}{1}{2}", Application.dataPath, Path.DirectorySeparatorChar, "StreamingAssets"));
        string InfoPath           = Replace(string.Format("{0}{1}{2}", streamingAssetPath, Path.DirectorySeparatorChar, "first.txt"));

        // fristFile.txt 路径
        string firstFilePath = Replace(string.Format("{0}{1}{2}", assetPath, Path.DirectorySeparatorChar, "first_files.txt"));

        // file.txt 路径
        string filePath = Replace(string.Format("{0}{1}{2}", assetPath, Path.DirectorySeparatorChar, "files.txt"));

        // first upk dir
        if (Directory.Exists(firstUpkPath))
        {
            Directory.Delete(firstUpkPath, true);
        }
        Directory.CreateDirectory(firstUpkPath);

        // 开始打包
        List <UPKInfo> infoList = new List <UPKInfo>();

        var fileData = File.ReadAllText(firstFilePath);
        var files    = ReadFileInfo(fileData);

        for (int i = 0; i < files.Length; i++)
        {
            var file = files[i];
            var fs   = Replace(Path.Combine(assetPath, file.Path));

            FileInfo filesInfo  = new FileInfo(fs);
            UPKInfo  filesuinfo = new UPKInfo();
            filesuinfo.relativePath = "files.txt";
            filesuinfo.absolutePath = filePath;
            filesuinfo.length       = filesInfo.Length;

            infoList.Add(filesuinfo);
        }

        // 打包
        UPKEngine.Pack(infoList, UPKPath, InfoPath);

        RGLog.Debug(" 生成 first upk 包");
    }
Ejemplo n.º 3
0
    // 解首包 upk
    private void UnpackFirstUpk()
    {
        state = STATE.UNPACK_FIRST_UPK;

        hotUI.HOT_InitUnpackFirst();

        // 内存判断
        if (PGameTools.GetStorageSize() < UnpackFirstMemorySize)
        {
            hotUI.HOT_InitUnpackFirst();

            // 内存判断
            if (PGameTools.GetStorageSize() < UnpackFirstMemorySize)
            {
                hotUI.OutOfMemory(UnpackFirstMemorySize);
                return;
            }

            //解 first upk 包
            string infoFilePath = Path.Combine(Util.AppContentPath(), "first.txt");
            string upkFilePath  = Path.Combine(Util.DataPath, "first.upk");
            UPKEngine.UnpackFirst(infoFilePath, upkFilePath, Util.DataPath, this);
        }
    }
Ejemplo n.º 4
0
    /// <summary>
    /// 生成 streaming upk包
    /// </summary>
    public static void BuildStreamingUPK()
    {
        //资源路径
        string assetPath = Replace(string.Format("{0}{1}{2}", Application.dataPath, Path.DirectorySeparatorChar, "StreamingAssets"));

        // UPK 资源路径
        string UPKPath = Replace(string.Format("{0}{1}{2}", assetPath, Path.DirectorySeparatorChar, "streaming.upk"));

        // UPK INFO 资源路径
        string InfoPath = Replace(string.Format("{0}{1}{2}", assetPath, Path.DirectorySeparatorChar, "streaming.txt"));

        // files.txt 路径
        string filePath = Replace(string.Format("{0}{1}{2}", assetPath, Path.DirectorySeparatorChar, "files.txt"));

        //开始打包
        List <UPKInfo> infoList = new List <UPKInfo>();

        var fileData = File.ReadAllBytes(filePath);
        var files    = ReadFileInfo(filePath);

        for (int i = 0; i < files.Length; i++)
        {
            var file = files[i];
            var fs   = Replace(Path.Combine(assetPath, file.Path));

            FileInfo fileInfo = new FileInfo(fs);

            UPKInfo uinfo = new UPKInfo();
            uinfo.relativePath = file.Path;
            uinfo.absolutePath = fs;
            uinfo.length       = fileInfo.Length;

            infoList.Add(uinfo);
        }
        // 把files文件也加入
        FileInfo filesInfo  = new FileInfo(filePath);
        UPKInfo  filesuinfo = new UPKInfo();

        filesuinfo.relativePath = "files.txt";
        filesuinfo.absolutePath = filePath;
        filesuinfo.length       = filesInfo.Length;

        infoList.Add(filesuinfo);

        // 打包
        UPKEngine.Pack(infoList, UPKPath, InfoPath);

        // 删除 streamingAssets 内的其他资源
        // 删除文件
        string[] streamingFiles = Directory.GetFiles(assetPath);
        for (int i = 0; i < streamingFiles.Length; i++)
        {
            if (!streamingFiles[i].Equals(UPKPath) && !streamingFiles[i].Equals(InfoPath))
            {
                File.Delete(streamingFiles[i]);
            }
        }
        // 删除文件夹
        string[] streamingDirs = Directory.GetDirectories(assetPath);
        for (int i = 0; i < streamingDirs.Length; i++)
        {
            Directory.Delete(streamingDirs[i], true);
        }

        RGLog.Debug(" 生成 streaming upk 包完成");
    }