转载自:https://www.xuanyusong.com/archives/2656

Application.dataPath路径在PC上无论是Editor还是运行时毫无压力非常万能,但是在手机上完全无用。手机上有两个重要的路径:Application.streamingAssetsPath和Application.persistentDataPath

1.Application.streamAssetsPath

它是一个只读路径,游戏运行中程序只能对它进行读取,并无法写入。在Unity的Assets/目录下起一个叫StreamingAssets的文件夹即可。一般可以把一些预制的二进制文件(比如AssetBundle,mp4等)放在里面,这些文件在打包时不会被压缩(最好只放少量的文件,而且要做好加密工作,不然别人一解压就得到了里面的内容了),因此读取的速度是比较快的。。我个人觉得如果是assetBundle最好不要放在里面,因为用www把本地的assetbundle读取后,会将解压后的资源放在cache里面,但是由于StreamingAssets文件夹是只读文件,所以你没法删除它,那么应用程序就会更加占用空间。举个例子,就好比你在电脑上解压了一个zip文件,那么其实你只需要使用解压后的文件。但是原始用zip如果还保留在文件夹下,那么容量就更大了。同样的assetbundle如果放在cdn上去下载,那么你本地就不会保留这个多余的assetbundle文件,而是把解压后的资源保存在Cache中。

如果你坚持要把assetbundle放在StreamingAssets文件夹下,我觉得一定要做好加密的工作。因为把你的.ipa或.apk下载后都不用破解资源直接可以把你的assetBundle原封不动的取出来。

2.Application.persistentDataPath

它是一个可以读写的路径,在IOS上就是应用程序的沙盒。而在Android可以是程序的沙盒,也可以是sdcard,在打包Android的时候,ProjectSetting页面有一个选项Write Access,可以设置它的路径是沙盒还是sdcard。

如果你在这个路径下写入文件后,IOS上可以通过同步推一类的助手直接取出来写入的文件。在Android上如果你设置保存在沙盒中,那么必须root才能取出文件。不过建议你最好设置写入sdcard里,这样不用root也可以在电脑上访问文件。假设安装的手机没有sdcard,或者sdcard被锁住(有的安卓手机插拔usb会锁一下sdcard),那么它会自动指向你的应用程序沙盒路径。Application.persistentDataPath可以在运行后进行读写,由于有了这个特性,我们可以将需要热更的文件放在里面(当然不能直接放,可以将一些文件放在Application.streamingAssetsPath,在运行后再将Application.streamingAssetsPath里面的文件移动到Application.persistentDataPath下,再进行热更。也可以完全从服务器上下载后存放在Application.persistentDataPath。)

我觉得它的最大缺点就是只能在运行时才能写入或者读取,假设你想在打包前写入一些二进制文件在persistentDataPath里面是不行的。假设你要写android的交互插件,那么.java类中是无法访问unity里面的资源的。但是有一个办法,如下代码,图片放在Resources文件夹下,比如Awake方法中把二进制文件拷贝在persistentDataPath下面,这样c#java两边就都可以访问它了

手机上的unity路径的更多相关文章

  1. 华为联运游戏审核驳回:在未安装或需更新HMS Core的手机上,提示安装,点击取消后,游戏卡屏(集成的6.1.0.301版本游戏SDK)

    问题描述 更新游戏SDK到6.1.0.301版本之后,游戏包被审核驳回:在未安装或需更新华为移动服务版本(HMS Core)的手机上,提示安装华为移动服务(HMS Core),点击取消,游戏卡屏.修改 ...

  2. 如何实现桌面App图标可以动态显示消息数(类似手机上的QQ图标)?

    手机上的APP , 像QQ和微信等都可以在图标上动态显示消息数(最大99) , 那么你有没有想过这些效果是如何实现的?桌面上开发的传统应用程序能否也实现类似的功能? 1 思路 桌面快捷方式的图标本质上 ...

  3. Unity路径规划

    Unity路径规划  转自:http://www.cnblogs.com/zsb517/p/4090629.html 背景 酷跑游戏中涉及到弯道.不规则道路. 找来一些酷跑游戏的案例来看,很多都是只有 ...

  4. 手机上的ROM与RAM

    ROM:read only memory翻译为只读存储器. RAM:read access memory翻译为随机存储器. 下面是一张手机的配置参数表. 简单来说,RAM就是真正意义上的内存,而ROM ...

  5. 有谁知道什么工具测试IOS手机上APP的性能软件啊?

    有谁知道什么工具测试IOS手机上APP的性能软件啊?

  6. 第一步:卸载手机上的“WIFI万能钥匙”! 会分享自己家的wifi

    http://www.znds.com/tv-164866-1-1.html 楼主今日家中WIFI卡的不行,心想,20M的电信光纤没理由这么卡!于是就在网上查找了许多资料,接下来统一收集整理给大家!第 ...

  7. 远程实时调试手机上的Web页面

    1. 安装    需要Node.js平台, 先安装好后, 打开Node.js command prompt, 通过NPM来安装 weinre npm -g install weinre 2. 启动   ...

  8. Android手机上,利用bat脚本模拟用户操作

    ………… 那么你就可以来看看这篇帖子了. 言归正传 利用bat脚本模拟用户操作,需要用到两点: ①就是adb命令了,adb命令可以用来模拟用户在手机上的操作 ②bat语言,就是批处理语言,主要用来进行 ...

  9. 如何制作一个手机上的Github图床捷径(workflow)

    准备工作 github账号与绑定邮箱 建立一个仓库用于存放图片 生成github token 注意生成之后要备份以免后面要用到(页面刷新之后会看不见) 了解github上传文件的 GitHub API ...

随机推荐

  1. Python——数据分析,Numpy,Pandas,matplotlib

    由于图片内容太多,请拖动至新标签页再查看

  2. 字节输出流FileOutputStream

    #字节流 字节输出流FileOutputStream 创建输出流对象 OutputStream 流对象是一个抽象类,不能实例化.所以,我们要找一个具体的子类 :FileOutputStream. 查看 ...

  3. iis url 重写

    1.选择网站-找到有测url 重写 :2:选中它,在右上角有一个打开功能,点击打开 3.依然在右上角,点击添加规则 4:选择第一个,空白规则 名称随便输入,我们通常有这样一个需求,就是.aspx 后缀 ...

  4. OO_BLOG4_UML系列学习

    目录 Unit4 作业分析 作业 4-1 UML类图解析器UmlInteraction 作业 4-2 扩展解析器(UML顺序图.UML状态图解析,基本规则验证) 架构设计及OO方法理解的演进 测试理解 ...

  5. JS基石之-----常用方法封装的js库

    解析 URL Params 为对象 let url = 'http://www.domain.com/?user=anonymous&id=123&id=456&city=%E ...

  6. bugku insertsql

    题目链接 0X00题目给出的PHP代码 error_reporting(0); function getIp(){ $ip = ''; if(isset($_SERVER['HTTP_X_FORWAR ...

  7. h5和native测试时的区别

    我们以往的APP是使用原生系统内核的,相当于直接在系统上操作,是我们传统意义上的软件,更加稳定 H5的APP先得调用系统的浏览器内核,相当于是在网页中进行操作,较原生APP稳定性稍差,似乎还没有百万级 ...

  8. MySQL容器化详细教程

    前言:  上篇文章介绍了Docker工具的安装及常用命令使用.本篇文章我们会介绍如何在Docker中运行MySQL实例,可能有的小伙伴会问:为什么要在Docker里运行MySQL呢?因为在Docker ...

  9. JavaScript 作用域不完全指北

    什么是作用域 对于几乎所有编程语言,最基本的功能之一就是能够存储变量的值,并且能在之后对这个值进行访问和修改.这样就会带来几个问题,这些变量存储在哪里?程序在需要的时候又是如何找到它们的?要解决这些问 ...

  10. ssh实现无密码登陆

    参考教程:https://linux.cn/article-5444-1.html 1.假设你有一台主机A(ip:111.111.111.111),用户名为server123,想无密码登陆到主机B(1 ...