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类来读取文件(未测试);

 

附图:

unity查看资源引用 unity资源路径_移动端