unity作为通用平台,资源读取在各个平台有差异,尤其是移动端和PC端。untiy不同的资源与不同的路径对应,一下依次分析:
1)Application.dataPath
对应于Assets文件最在的目录,在pc端即为工程目录下的Assets路径,如(unity工程名称为Empt,存放在d盘test目录下):D:/test/Empty/Assets。移动端则为apk路径,路径所示可看最后附图的第一条。
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/";
"BB/aa");即获取Resources下BB目录下的aa资源。Resources.Load获取资源时,资源名称不用带后缀。
3)Application.temporaryCachePath
此路径为一个临时路径目录,在移动端只能通过www类获取,不能用C#File类来读取。
4)Application.persistentDataPath
通过www读取时需要在路径开头添加 "file://"
来实现协议,也可以采用C# system下的uri类(如new System.Uri(“路径”).AbsoluteUri),如WWW w = new WWW(new System.Uri(“路径”).AbsoluteUri);
PS:相关资料显示ios系统移动端均可采用file类来读取文件(未测试);
附图: