欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

unity 如何使用文件流读取streamingassets下的资源

程序员文章站 2022-03-25 13:03:22
目的:读取streamingassets下的文件中指定的一段字节已知:文件中的起始位置,和需要读取的长度1.android下读取1.1 不能直接使用c#的filestream,读取失败报错:isola...

目的:读取streamingassets下的文件中指定的一段字节

已知:文件中的起始位置,和需要读取的长度

1.android下读取

1.1 不能直接使用c#的filestream,读取失败

报错:

isolatedstorageexception: could not find a part of the path "/jar:file:/data/app/com.xxx.xxxx-1/base.apk!/assets/xxx.pack".

1.2 可以使用unity原生接口与android交互

主要过程:

java

注意skip、read的可靠性,每次调用不一定能返回正确长度,可能需多次调用。

参考

c#:

这种方法是在java分配内存。

1.3 更灵活的方法,使用jni,可以从c#传递指针到c++

在android studio中生成库libnativelib.so文件,参考nativereadbytes

c++

java

c#

2.ios下读取

可以直接在c#下读取,streamasseting只有读的权限,用openread

补充:unity中 在移动平台各种读写文件夹存路径整理 如 streamingassets 等文件夹 各个路径在各种平台的文件路径

1:resources 文件夹 少用

unity 如何使用文件流读取streamingassets下的资源

2:streamingassets

在移动端也是只可读的不能写入数据 主要用来存放二进制文件。

3:application.persistentdatapath

这个目录可读可写 一般存本地关卡等

用于存档 直接使用 打包之前是没有这个目录的,直到应用程序在手机上安装完毕才有这个目录。

该文件存在手机沙盒中,因为不能直接存放文件,

1.通过服务器直接下载保存到该位置,也可以通过md5码比对下载更新新的资源

2.没有服务器的,只有间接通过文件流的方式从本地读取并写入application.persistentdatapath文件下,然后再通过

application.persistentdatapath来读取操作。

注:在pc/mac电脑 以及android跟ipad、ipone都可对文件进行任意操作,另外在ios上该目录下的东西可以被icloud自动备份。

对应存储路径

windows应用商店应用程序:

android:application.persistentdatapath指向大多数设备上的/storage/emulated/0/android/data/<packagename>/文件(有些旧手机可能指向sd卡上的位置,如果存在),该路径使用android.content.context.getexternalfilesdir解析

4:application.temporarycachepath

来操作文件 同上但是 此属性用于返回一个临时数据的缓存目录(不会备份并且清空缓存会清掉)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。