关于Unity的平台转换的坑(Path路径、AssetBundle等)

本文分享了从PC平台向Android平台移植Unity项目的经验教训。详细介绍了路径处理、资源读取等方面的注意事项,特别是针对Path.Combine使用及Application.streamingAssetsPath路径访问的具体实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近期移植公司项目,从PC平台移植到Android平台,遇到了各种坑……真是自己知识浅薄啊!!!!
1、Unity中使用C#的Path相关API,例如Path.Combine(string path1, string path2),这个API是将两个路径组合到一起,例如将“E:\Project”和“Unity.exe”这两个组合到一起,返回的就是“E:\Project\Unity.exe”。注意亮点,返回的路径中是使用的是“\”而非“/”,因此使用中需要注意将“\”替换成“/”,否则Unity中读取资源可能出现问题,但是IO操作能够识别路径。
下面刨坑了……这个Path路径组合的方法在PC端使用没问题,但是转到Android平台就会报错,找了好久才发现路径不存在!!!!!
2、关于Application.streamingAssetsPath的路径,官方说明了这个路径是只读不可写的,网上资料说这个路径只能通过WWW加载,其实并非如此。
    首先,这个路径可以通过IO以打开的方式读取,例如File.Open(path, FileMode.Open, FileAccess.Read)方法、new FileStream(path, FileMode.Open)方法等,也就是说只要是打开的方式读取文件应该都可以(
其他的操作还没试……);
    其次,如果是使用Directory的API操作这个路径,那么在Android平台上会不存在,例如我使用Directory.Exists(path)判断
streamingAssetsPath下的某个文件路径是否存在,始终返回false,
    最后说明下使用WWW访问
streamingAssetsPath的坑,在PC端和Iphone访问需要在头部添加"file://",例如new WWW("file://" + Application.streamingAssetsPath + "/file.txt"),WWW会加载file.txt文件,但是在Android平台上访问,只需要使用Application.streamingAssetsPath即可,无需添加"file://"或"jar:file://"之类的,例如new WWW(Application.streamingAssetsPath + "/file.txt"),便可加载file.txt文件。因为这个路径在Android平台上对应的路径已经是"jar:file:///data/app/com.xxx.xxx-1.apk!/assets"。还需注意下,加载streamingAssetsPath路径下的资源,全部要带扩展名,而Resources下无需带扩展名。
3、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值