Unity游戏资源解压

Unity2017;ICSharpCode.SharpZipLib.Zip;

using UnityEngine;
using System.Collections;
using System.IO;
using ICSharpCode.SharpZipLib.Zip;

public class ZipTest : MonoBehaviour
{

    private WWW www;
    private bool isUnzipped = false;

    // Use this for initialization
    void Start()
    {
        string url = "http://54.193.6.32:8080/U3dFileToServer/upLoad/WFJ/StreamingAssets.zip";
        StartCoroutine(DownLoadZip(url));
    }

    // Update is called once per frame
    IEnumerator DownLoadZip(string url)
    {
        WWW www = new WWW(url);
        yield return www;

        if (www.isDone && !isUnzipped)
        {
            Debug.Log("Load zip complete");
            byte[] data = www.bytes;

            string persistentPath = Application.persistentDataPath;
            string zipName = "StreamingAssets.zip";
            string docPath;
            docPath = persistentPath + "/" + zipName;
            Debug.Log("docPath=" + docPath);

            System.IO.File.WriteAllBytes(docPath, data);

            UnZip(docPath, persistentPath, "");
        }
    }

    /// <summary>
    /// ZIP:解压一个zip文件
    /// add yuangang by 2016-06-13
    /// </summary>
    /// <param name="ZipFile">需要解压的Zip文件(绝对路径)</param>
    /// <param name="TargetDirectory">解压到的目录</param>
    /// <param name="Password">解压密码</param>
    /// <param name="OverWrite">是否覆盖已存在的文件</param>
    void UnZip(string ZipFile, string TargetDirectory, string Password, bool OverWrite = true)
    {
        //如果解压到的目录不存在,则报错
        if (!System.IO.Directory.Exists(TargetDirectory))
        {
            throw new System.IO.FileNotFoundException("指定的目录: " + TargetDirectory + " 不存在!");
        }
        //目录结尾
        if (!TargetDirectory.EndsWith("\\")) { TargetDirectory = TargetDirectory + "\\"; }

        using (ZipInputStream zipfiles = new ZipInputStream(File.OpenRead(ZipFile)))
        {
            zipfiles.Password = Password;
            ZipEntry theEntry;

            while ((theEntry = zipfiles.GetNextEntry()) != null)
            {
                string directoryName = "";
                string pathToZip = "";
                pathToZip = theEntry.Name;

                if (pathToZip != "")
                    directoryName = Path.GetDirectoryName(pathToZip) + "\\";

                string fileName = Path.GetFileName(pathToZip);

                Directory.CreateDirectory(TargetDirectory + directoryName);

                if (fileName != "")
                {
                    if ((File.Exists(TargetDirectory + directoryName + fileName) && OverWrite) || (!File.Exists(TargetDirectory + directoryName + fileName)))
                    {
                        using (FileStream streamWriter = File.Create(TargetDirectory + directoryName + fileName))
                        {
                            int size = 2048;
                            byte[] data = new byte[2048];
                            while (true)
                            {
                                size = zipfiles.Read(data, 0, data.Length);

                                if (size > 0)
                                    streamWriter.Write(data, 0, size);
                                else
                                    break;
                            }
                            streamWriter.Close();
                        }
                    }
                }
            }
            zipfiles.Close();
        }
        //
        File.Delete(ZipFile);
    }
}
时间: 2024-08-09 02:20:21

Unity游戏资源解压的相关文章

提取Unity游戏资源和脚本

UnityStudio UnityStudio可以直接在自己的软件上查看图片.shader.文本.还能直接播放音频.甚至还能看场景Hierarchy视图的树状结构.强烈推荐用UnityStudio. UnityStudio最新版本下载 支持unity5.x  https://github.com/Perfare/UnityStudio/releases 直接预览图片 直接播放音频 查看场景树状结构 查看Shader代码. 查看文本内容 .NET Reflector 8 1.Unity编译后最终会

微信公众号 chinaxdt 的 解压密码 mima

关于密码:解压密码获取方式第一步关注微信号“chinaxdt”第二步发送信息“mima”即可获取自动回复解压密码 这个 chinaxdt 的微信公众号已经失效,所以大家也不用去加了,密码我这告诉大家. 资源解压密码为:www.ndi.com.cn 赶快去解压你已经幸苦下载的资源吧

【我爱科技论坛】关于我爱科技论坛解压密码的说明

关于我爱科技论坛资源解压密码的说明 我爱科技论坛最近对这个问题已经进行了更新和说明,大家可以自行查看 我爱科技论坛自成立以来,已经不断丰富完善了论坛中的考研资料.编程学习.黑科技.开源软件等资源模块,并免费分享传播了很对优质资源,同时也得到了各位网友们的积极支持和响应,这无疑极大地促进了论坛和谐的健康发展.同时为了避免一些伸手党,我爱科技论坛在发布部分优质资源的时候也添加了相关的压缩密码,一方面可以保证资源短时间内不被和谐,同时也对于部分资源进行了安全加密处理,保证了用户分享的资源的安全.目前获

《双星物语》游戏资源格式分析与解包

作为一款 2001 年发行的老游戏,封包算法应该不会很复杂才对,抱着这样想法的博主,尝试着去分析游戏资源包的封包格式,最后成功将资源解包,下面我们来看看双星物语的游戏资源包封包格式: 游戏资源包以 dat 作为扩展名,一共有两个,分别是 wav.dat 和 BIN.dat,其中 wav.dat 体积较小,先从它下手,用十六进制编辑器打开后,可以看到整齐的文件头部,经过观察发现,整个资源包以[包头][文件类型信息][文件信息][文件数据]这样子的结构组织而成: 首先是[包头],大小为 8 字节,前

Unity 提取游戏资源之ktx转换

从雨松的博文<Unity3D研究院之mac上从.ipa中提取unity3D游戏资源(六十六)>可以学到提取Unity的游戏资源,其中有用到一个工具:PVRTexTool 因为这个工具的官网不好下载,故将其上传到CSDN,下载地址:http://download.csdn.net/detail/akof1314/7660209 提取出来的资源,其中的ktx资源,用PVRTexToolGUI.exe可以打开查看,可以发现都是上下颠倒,且被拉伸 直接转为png格式的批处理脚本为: 1 2 3 4 5

vc解压和载入zip资源包方法

提示: 这种方法解压后会释放所有文件在你选择的路径下,但是有个缺点是不会删除解压的文件 需要在项目中添加XUnzip.cpp和XUnzip.h代码:(需要的朋友可留言) //载入zip资源包 BOOL ui_dlg_main::LoadZipFileToDir(LPSTR lpDir) //lpDir为载入资源包的路径 { OPENFILENAMEA ofn = { 0 }; char strFileName[MAX_PATH] = ""; memset(&ofn, 0, si

日式横版射击游戏《天蓝色ElexiaJ》的资源解包

----------------------------------------------------------------------- !!警告!! 游戏资源所有权,归游戏开发商所有: 以下解包算法仅供学习交流,请勿用于商业与非法用途: 由此产生的一切后果,与博主(我)无关: ----------------------------------------------------------------------- 废话不多说,游戏的封包以 pack 为后缀名,内存布局很简单,首先是一

Unity 浅谈AssetBundle 游戏资源

--刚刚做完一个xlua的的热更项目,对AssetBundle资源分类总结一下.纯理论,闲谈知识,要是有建议,尽管提 ,不掺杂代码. --这里说说,AB是如何打包,如果下载,如何加载. 关键词理解:依赖,被依赖,公共, 非公共,. 1.如何打包? 游戏资源的话,我这里是分为两大类. 常驻资源 I.常驻公共资源(主界面图集,背景音乐等的必须要加载的资源) ||.非 常驻公共资源(战斗界面图集,因为存在只登录游戏,不进战斗的情况) 非常驻资源 |||.经常反复资源 V.其他 2.下载资源? 下载资源

(转)unity3D 如何提取游戏资源 (反编译)+代码反编译

原帖:http://bbs.9ria.com/thread-401140-1-1.html 首先感谢 雨松MOMO 的一篇帖子 教我们怎么提取 .ipa 中的游戏资源.教我们初步的破解unity3d资源的基本方法附上原帖的链接:http://www.xuanyusong.com/archives/2584 下面我会从头介绍一下提取的全过程: 步骤一:首先从 https://github.com/ata4/disunity/releases 下载 DisUnity v0.3.1也可以直接用工具下载