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

近期移植公司项目,从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、

你可能感兴趣的:(Unity3D)