(个人)AR电子书系统创新实训第三周(1)
来源:互联网 发布:淘宝充的话费可以退吗 编辑:程序博客网 时间:2024/06/08 03:15
文件的导入与打包
为了能够方便地制作资源,我们需要制作一个桌面端的程序,用于导入图片和视屏资源,将资源绑定在一起,组成可被手机应用识别的数据包,并将数据包上传到服务器,最后得到数据包在服务器上地址的二维码,手机应用可以通过扫描二维码的形式下载该数据包。本周,我主要测试了一下Unity中文件导入和打包的功能。
文件导入
读取文件:在读取文件上,我用到了两个比较重要的东西。其一是Windows.Form,它是一个可以让Unity调用Windows接口的插件,我主要使用此插件来打开资源浏览器,用于给用户选取文件路径。
OpenFileDialog opLog = new OpenFileDialog(); opLog.InitialDirectory = UnityEngine.Application.dataPath; opLog.Filter = "jpg files (*.jpg)|*.jpg|All files (*.*)|*.*"; DialogResult result = opLog.ShowDialog();
获得了路径后,还需要将改路径的文件读入程序,这里所使用的是Unity自带的WWW类。WWW是一个十分简单实用的网络请求类,其可以发送Post和Get请求来实现资源的上传和下载,而除此之外,WWW还可以读入本地的文件,只需要在本地文件地址前填入“file://”协议即可。虽然WWW的导入过程需要写在协程函数中,在调试时无法打断点中断,但仍然还是十分方便的。
//通过www读入本地文件。 private IEnumerator opt(string path) { string str = "file:///" + path; string filename = path.Substring(path.LastIndexOf("\\") + 1); filename = filename.Substring(0, filename.LastIndexOf('.')); www = new WWW(@str); yield return www; if (www != null && string.IsNullOrEmpty(www.error)) { //获取Texture //Texture texture = www.texture; string fullpath = UnityEngine.Application.dataPath + "/Resources/" + filename + ".png"; Debug.Log(fullpath); testimage.canvasRenderer.SetTexture(txt); Debug.Log("加载成功"); } else { Debug.Log(www.error); } }
写入文件:通过WWW导入文件后,便需要将文件写到特定的文件夹,以进行打包,说白了,这就是一个复制粘贴的过程。WWW虽然可以读取文件,但似乎没有写入文件的功能,因此需要使用到File类。
File类也就是文件流类,使用起来也比较简单,只需要调用其静态函数WriteAllBytes,以输出路径和文件的字节数据为参数就行了。
byte[] data = www.texture.EncodeToPNG(); File.WriteAllBytes(fullpath, data);
文件打包
Unity自身并没有什么可以方便动态打包的工具,因此,我使用了ICSharpCode.SharpZipLib库来进行zip打包。这个库和Zxing一样只是一个动态库文件,只需要拖入工程项目中就可以使用了。SharpZip的打包代码不是那么直观,因此需要做一下封装。具体代码比较多我就不放上来了,封装后的类是ZipUtility。
string[] Array = new string[1]; Array[0] = UnityEngine.Application.dataPath + "/Resources"; ZipUtility.Zip(Array, UnityEngine.Application.dataPath + "/ZIPS/test.zip",null, cbk);
其中Zip函数的第一个参数是源文件的目录,第二个参数是输出路径,第三个参数是密码,第四个参数是一个自己写的回调函数,用于跟踪打包状态。
- (个人)AR电子书系统创新实训第三周(1)
- (个人)AR电子书系统创新实训第三周(1)
- (个人)AR电子书系统创新实训第三周(1)
- (个人)AR电子书创新系统实训第三周(1)
- (个人)AR电子书系统创新实训第三周(1)
- (个人)AR电子书系统创新实训第六周
- (个人)AR电子书系统创新实训第三周(2)
- (个人)AR电子书系统创新实训第三周(2)
- (个人)AR电子书创新系统实训第三周(2)
- (个人)AR电子书系统创新实训第三周(2)
- (个人)AR电子书系统创新实训第三周(2)
- (个人)AR电子书系统创新实训中期总结
- (个人)AR电子书系统创新实训期中汇报
- (个人)AR电子书系统创新实训第二周(1)
- (个人)AR电子书系统创新实训第二周(1)
- (个人)AR电子书系统创新实训第二周(1)
- (个人)AR电子书系统创新实训第二周(1)
- (个人)AR电子书系统创新实训第二周(1)
- Android-Ubuntu系统中使用Android studio并导入Android5.1源码
- Android开发问题之Fragment not attached to Activity
- 1.Node.js 接入微信公众平台开发
- PyQt5+Python3.5.3-64bit开发环境搭建
- ContentProvider 小结
- (个人)AR电子书系统创新实训第三周(1)
- 火狐快捷键
- 关于WdatePicker.js插件日期精确度问题
- 如何自动生成文本摘要
- RSA非对称加密工具JAVA实现
- 浅谈信号量
- TF/04_Support_Vector_Machines/06_Implementing_Multiclass_SVMs
- 一周入门Kotlin(二)
- 内存操作类(共享映射文件 MemoryMappedFile)