资源路径问题

前言

unity作为通用平台,资源读取在各个平台有差异,尤其是移动端和PC端。untiy不同的资源与不同的路径对应,一下依次分析:

1.Application.dataPath

对应于Assets文件最在的目录,在pc端即为工程目录下的Assets路径,如(unity工程名称为Empt,存放在d盘test目录下):D:/test/Empty/Assets。移动端则为apk(Android)路径,路径所示可看最后附图的第一条。

2.Application.streamingAssetsPath

此路径对应于StreamingAssets目录,StreamingAssets目录为unity保留路径,即手动建立的StreamingAssets目录unity也会特殊处理。在移动端,此目录下资源文件会包打包处理,外部无法手动打开访问。pc端可以通过C#的File等类进行读取,但是在移动端只能通过www类来加载。在移动端无法用File类来读取,而且File.Exists(Path.Combine(Application.streamingAssetsPath, “******”));始终返回false,所以只能通过www来加载。此路径与Application.dataPath有如下关系"jar:file://" + Application.dataPath + “!/assets/”;

在此说一下Resources目录,Resources也是unity保留路径,不过Resources里面资源unity会进行相关处理(如去掉没有应用的,以及压缩等文件等),而StreamingAssets下的文件则不会进行处理。获取Resources下的文件时通过Resources.Load()方法来加载,如通过string str = Resources.Load(“hello”).ToString()来获取hello.txt下的文本;通过Texture2D t =(Texture2D) Resources.Load(Path.GetFileNameWithoutExtension(imageName))获取imageName图片。如果Resources下有子目录可以采用相对路径(Texture2D)Resources.Load(“BB/aa”);即获取Resources下BB目录下的aa资源。Resources.Load获取资源时,资源名称不用带后缀。

3.Application.temporaryCachePath

此路径为一个临时路径目录,在移动端只能通过www类获取,不能用C#File类来读取。

4.Application.persistentDataPath

此路径是一个unity开放的文件路径,此路径下的文件可以随意更改删除,在移动端存放在可公开的SDCard上,具体路径可看附图中的第二条。此路径下的资源既可以通过www类来读取,也可以通过File类来读取。通过www读取时需要在路径开头添加 "file://"来实现协议,也可以采用C# system下的uri类(如new System.Uri(“路径”).AbsoluteUri),如WWW w = new WWW(new System.Uri(“路径”).AbsoluteUri);
PS:相关资料显示ios系统移动端均可采用file类来读取文件(未测试);

5.自己输出路径

在这里插入图片描述

6.资料路径

在这里插入图片描述
file:///sdcard/Movies/aa.mp4 此为标准路径,file后面三个斜杠

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值