Unity3d各平台资源路径文件夹
之前一直是PC项目,公司终于考虑移动平台了,但是试验了几把,感觉移动平台资源管理路径还是有很多隐藏的注意事项。
比如在PC上可以做到随便读写,但是在移动平台就涉及到权限问题。
看到小伙伴的总结,还是要记录一下,好记性不如烂笔头啊,主题如下:
1.Unity的资源数据加载
2.Resource、StreamingAsset文件夹,安装后的路径(Android,iOS)
3.Unity在打包和安装的时候怎么处理persistentDataPath
4.Unity的Android和IOS上相关的目录结构
5.Unity常用目录对应的Android && iOS平台地址
下面开始细说具体的注意事项>>>>>>>>>>>>
1.Unity的资源数据加载 - Resources、AssetBundle、StreamingAsset、PersistentDataPath
Resources目录
- 打包集成到.asset文件里面及引用的资源as后se一个文件里面面
- 主线程加载
- 想要动态更新资源则不考虑
AssetBundle
- unity定义的二进制文件类型
- 用WWW类下载
StreamingAssets目录
- 可读不可写
- 内容限制 - 无
- 只能用WWW类下载
PersistentDataPath目录
- 可读可写
- 内容限制 - 无
- 清除手机缓存文件会一并清理这里的东西
- 随意弄,可作为本地目录让WWW下载、也可以自己用FileInfo 或者FileStream读写;
private void WriteCfg(string content)
{
string targetPath = Application.persistentDataPath + "/cfg.txt";
StreamWriter sw;
FileInfo t = new FileInfo(targetPath);
if (!t.Exists)
{
//如果此文件不存在则创建
sw = t.CreateText();
}
else
{
//如果此文件存在则打开
sw = t.AppendText();
}
//以行的形式写入信息
sw.WriteLine(content);
sw.Close();
sw.Dispose();
}
FileStream fs = new FileStream(targetPath, FileMode.Create, FileAccess.ReadWrite);
fs.Write(www.bytes, , www.bytes.Length);
fs.Flush();
fs.Close();
2.Resource、StreamingAsset文件夹,安装后的路径(Android,iOS)
StreamingAsset
-PC:Application.dataPath + "/StreamingAssets";
- iOS : Application.dataPath + “/Raw”;
- Android : jar:file:// + Application.dataPath + !/assets/
Unity目前在Android平台也直接提供jar:file的格式,无需自己添加,直接使用:
只能通过www读取,因为该文件夹在jar包内部,协议是jar:file:// ,Application.streamingAssetsPath返回的路径会自动添加该协议。
public string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, "MyFile");
public string result = "";
IEnumerator Example() {
if (filePath.Contains("://")) {
WWW www = new WWW(filePath);
yield return www;
result = www.text;
} else
result = System.IO.File.ReadAllText(filePath);
}
Resources
- 打包成一个Asset文件
3.Unity在打包和安装的时候怎么处理PersistentDataPath
- PersistentDataPath- 就是com.**.**/files 的路径而已
比如Android发布导出设置 write acess选择SD Card,否则就失去了读写的意义,www读取,stream读写。
注意,WWW加载时 Application.persistentDataPath返回的路径不会自动添加协议,需要手动添加,协议是file://而不是jar:// 因为导出包是外面的SD卡。
该目录会在SD卡中暴露出来,无需root权限,属于本地文件,可以直接在手机文件管理中看到,因此也需要本地文件协议file://读取,日志可以写于此处。
4.Unity的Android和IOS上相关的目录结构
Android:
- assets 游戏内容相关的都在这里了
- lib JNI相关的东西
- META-INF Java包跟rar包的区别
- res 图标之类的
- AndroidManifest.xml Android配置文件
- classes.dex Java虚拟机runtime的东西
- resources.arsc Java编译后的二进制文件
IOS:
- level0/level1… Scene
- sharedassets0/shaedassets1/… Scene相关的东西
- Managed 脚本编译后的dll
- resources.assets Resources里面的东西
- Raw StreamingAssets里面的东西
5. Unity常用目录对应的Android && iOS平台地址
IOS:
Application.dataPath : Application/xxxxx/xxx.app/Data
Application.streamingAssetsPath : Application/xxxxx/xxx.app/Data/Raw
Application.persistentDataPath : Application/xxxxx/Documents
Application.temporaryCachePath : Application/xxxxx/Library/Caches
Android:
Application.dataPath : /data/app/xxx.xxx.xxx.apk
Application.streamingAssetsPath : jar:file:///data/app/xxx.xxx.xxx.apk/!/assets
Application.persistentDataPath : /data/data/xxx.xxx.xxx/files
Application.temporaryCachePath : /data/data/xxx.xxx.xxx/cache
转自Unity3D吧,以上内容仅做参考,最新使用规范参见官方地址:
http://docs.unity3d.com/ScriptReference/Application-dataPath.html
Unity3d各平台资源路径文件夹的更多相关文章
- Unity3d中所有特殊的文件夹
1.Editor Editor文件夹可以在根目录下,也可以在子目录里,只要名子叫Editor就可以.比如目录:/xxx/xxx/Editor 和 /Editor 是一样的,无论多少个叫Editor的 ...
- Unity3D引擎中特殊的文件夹
Editor Editor文件夹可以在根目录下,可以在子目录里,只要名是Editor就可以./xxx/xxx/Editor 和 /Editor 是一样的,多少个叫Editor的文件夹都可以.Edit ...
- springboot打包后静态资源webapp文件夹无法打包进去
1.如下图的目录结构 webapp 文件夹和resources 文件夹同级.使用mvn clean install 打包过后项目启动访问,静态资源页面404. 2.原因,springboot 打包时候 ...
- VS2017开发.net core 时默认发布路径文件夹多个BPC
新安装的VS2017,编译后进行发布,结果在bin文件夹下多了个BPC文件夹,很是费解,查了资料才知道是VS2017默认设置了环境变量.在此记录下,如果不需要默认路径可修改环境变量,具体操作如下: 我 ...
- 使用C#读取网站相对路径文件夹下所有图片
public JsonResult GetCourseInitCover() { //设置相对路径 string imgurl = Server.MapPath("~/Content/ima ...
- java判断指定路径文件夹是否存在,若不存在则创建新的文件夹
File file = new File(dirPath); if (!file.exists()) { file.mkdirs(); }
- SpringBoot-(10)配置虚拟路径-指定外部路径文件夹存取文件
参考:https://blog.csdn.net/feng2147685/article/details/95623135 package com.online.director; import or ...
- Unity3D移动平台动态读取外部文件全解析
前言: 一直有个想法,就是把工作中遇到的坑通过自己的深挖,总结成一套相同问题的解决方案供各位同行拍砖探讨.眼瞅着2015年第一个工作日就要来到了,小匹夫也休息的差不多了,寻思着也该写点东西活动活动大脑 ...
- (转)Unity3D移动平台动态读取外部文件全解析
Unity3D移动平台动态读取外部文件全解析 c#语言规范 阅读目录 前言: 假如我想在editor里动态读取文件 移动平台的资源路径问题 移动平台读取外部文件的方法 补充: 回到目录 前言: 一直有 ...
随机推荐
- ztree 展示
1. controller@RequestMapping("/function.htm") public String function(HttpSession session, ...
- IntelliJ IDEA 12 与 Tomcat 集成并运行Web项目
配置Tomcat Server 1.Ctrl+Alt+s或者File——>Setting...;选中“Application Servers”点击"+" 创建运行配置 上面的 ...
- 斐波那契博弈(Fibonacci Nim)
问题: 有一堆个数为n(n>=2)的石子,游戏双方轮流取石子,规则如下: 1)先手不能在第一次把所有的石子取完,至少取1颗: 2)之后每次可以取的石子数至少为1,至多为对手刚取的石子数的2倍. ...
- 一个关于qml插件的文章-转
制作Qt Quick 2 Extension Plugin的几个问题-Qt 经过几天的google和爬帖,加上自己的摸索,终于把新版的Qt Quick 2制作插件的问题给弄了个明白,工作流可以建立了. ...
- Oracle ODP.NET 篇
1.C# 使用 System.Data.OracleClient 连接 Oracle 需要安装 instantclient , 并配置相应环境变量.重启,方可使用. 2. 使用 System.Data ...
- [开发笔记]-页面切图、CSS前端设计、JS
这两天在学习页面的切图,样式设计,把学习过程中注意的地方记录下来. 一. input输入框点击时去掉外边框 一般在IE,firefox下,设置 border:0 none; 即可.但在chrome下, ...
- K2 如何和 Java 做整合?
本文内容来自K2社区 问题:我们清楚K2 产品是基于.net 平台,我们有需求要将Java平台的表单和K2进行整合,使用K2.可以有什么方案建议? 专家解答: 这个需求也是比较常见的,以下是我的一些经 ...
- 百胜集团李磊:BPM实现业务流程全过程无缝链接
作为全球最大的餐饮企业之一,百胜集团在形成规模化连锁经营效应的同时,战略地利用信息化手段,强化管理和运营水平,打造企业的核心竞争力.通过流程梳理,百胜集团实现了以规模化.规范化.信息化和现代化为主题的 ...
- matlab代码 图像处理源码
非常不错的找图像处理源码的地方,源码搜搜. http://www.codesoso.com/Category.aspx?CategoryId=56
- greenDao 3.0基础
引入greenDao3.0 首先在project的gradle文件中引入greenDAO插件 dependencies { classpath 'com.android.tools.bui ...