之前一直是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各平台资源路径文件夹的更多相关文章

  1. Unity3d中所有特殊的文件夹

    1.Editor Editor文件夹可以在根目录下,也可以在子目录里,只要名子叫Editor就可以.比如目录:/xxx/xxx/Editor  和 /Editor 是一样的,无论多少个叫Editor的 ...

  2. Unity3D引擎中特殊的文件夹

    Editor Editor文件夹可以在根目录下,可以在子目录里,只要名是Editor就可以./xxx/xxx/Editor  和 /Editor 是一样的,多少个叫Editor的文件夹都可以.Edit ...

  3. springboot打包后静态资源webapp文件夹无法打包进去

    1.如下图的目录结构 webapp 文件夹和resources 文件夹同级.使用mvn clean install 打包过后项目启动访问,静态资源页面404. 2.原因,springboot 打包时候 ...

  4. VS2017开发.net core 时默认发布路径文件夹多个BPC

    新安装的VS2017,编译后进行发布,结果在bin文件夹下多了个BPC文件夹,很是费解,查了资料才知道是VS2017默认设置了环境变量.在此记录下,如果不需要默认路径可修改环境变量,具体操作如下: 我 ...

  5. 使用C#读取网站相对路径文件夹下所有图片

    public JsonResult GetCourseInitCover() { //设置相对路径 string imgurl = Server.MapPath("~/Content/ima ...

  6. java判断指定路径文件夹是否存在,若不存在则创建新的文件夹

    File file = new File(dirPath); if (!file.exists()) { file.mkdirs(); }

  7. SpringBoot-(10)配置虚拟路径-指定外部路径文件夹存取文件

    参考:https://blog.csdn.net/feng2147685/article/details/95623135 package com.online.director; import or ...

  8. Unity3D移动平台动态读取外部文件全解析

    前言: 一直有个想法,就是把工作中遇到的坑通过自己的深挖,总结成一套相同问题的解决方案供各位同行拍砖探讨.眼瞅着2015年第一个工作日就要来到了,小匹夫也休息的差不多了,寻思着也该写点东西活动活动大脑 ...

  9. (转)Unity3D移动平台动态读取外部文件全解析

    Unity3D移动平台动态读取外部文件全解析 c#语言规范 阅读目录 前言: 假如我想在editor里动态读取文件 移动平台的资源路径问题 移动平台读取外部文件的方法 补充: 回到目录 前言: 一直有 ...

随机推荐

  1. DOM操作 append prependTo after before

    通过JavaScript可以很方便的获取DOM节点,从而进行一系列的DOM操作.但实际上一般开发者都习惯性的先定义好HTML结构,但这样就非常不灵活了. 试想下这样的情况:如果我们通过AJAX获取到数 ...

  2. Java文件编码格式转换

    转自博文<Java文件编码格式转换>: 默认被转换的格式为GBK,转换成的格式为UTF-8 import info.monitorenter.cpdetector.CharsetPrint ...

  3. CI框架 数据库批量插入 insert_batch()

    使用CI框架的AR操作:insert_batch()可以减少访问数据库的次数.一次访问即可. 示例1: $data = array( array( 'title' => 'My title' , ...

  4. 46. Permutations——本质和树DFS遍历无异 fun: for i in nums fun(i)

    Given a collection of distinct numbers, return all possible permutations. For example, [1,2,3] have ...

  5. 使用Web Service进行网络编程-----Web Service简介

    Android应用通常都是运行在手机平台上,手机系统的硬件资源是有限的,不管是存储能力还是计算能力都是有限的,在Android系统上开发.运行一些单用户.小型应用是可能的,但对于需要进行大量的数据处理 ...

  6. [css3]搜索框focus时变长

    结构: <form class="demo-a">    <input placeholder="Search" type="sea ...

  7. NOIP2009解题报告

    09年的题总体来说 没有难题,但是每道题除了第一题都要认真的慢慢写才能AC, 第一题: R国和S国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动. 历经艰险后,潜伏于S国的R国间谍小C终于摸清 ...

  8. Linux-Gcc生成和使用静态库和动态库详解

    一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不同( ...

  9. 戴文的Linux内核专题:07内核配置(3)

    转自Linux中国 OK,我们还继续配置内核.还有更多功能等待着去配置. 下一个问题(Enable ELF core dumps (ELF_CORE))询问的是内核是否可以生成内核转储文件.这会使内核 ...

  10. 多线程第一次亲密接触 CreateThread与_beginthreadex本质区别

    本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beg ...