代码改变世界

Unity快速学习(1)--常用路径

2023-06-27 09:37  卡斯撸代码  阅读(334)  评论(0编辑  收藏  举报

Unity 常用路径总结


一、Application路径

先上在Unity中经常使用的代码

//数据持久化路径
Application.persistentDataPath
//Assets相对路径
Application.dataPath
//StreamingAssets外部加载路径
Application.StreamingAssets
//临时路径
Application.temporaryCachePath

1、Resources

是作为一个Unity的保留文件夹出现的,也就是如果你新建的文件夹的名字叫Resources,那么里面的内容在打包时都会被无条件的打到发布包中,其中资源的格式会经过了unity的处理,算是unity的一种资源。
特点:

  • 只读,即不能动态修改。所以想要动态更新的资源不要放在这里。
  • 会将文件夹内的资源打包集成到.asset文件里面。因此建议可以放一些Prefab,因为Prefab在打包时会自动过滤掉不需要的资源,有利于减小资源包的大小。
  • 资源读取使用Resources.Load()。
  • 任何平台都可以用File读取

2、StreamingAssets

StreamingAssets和Resources很像。同样作为一个只读的Unity3D的保留文件夹出现。不过两者也有很大的区别,那就是Resources文件夹中的内容在打包时会被压缩和加密。而StreamingAsset文件夹中的内容则会原封不动的打入包中,因此StreamingAssets主要用来存放一些二进制文件。这里原封不动的意思,是不经过unity自身的处理,因此,比如把音视频放这个文件夹,想直接拖到场景中使用是拖不了的。在任何平台中总可以统一使用Application.streamingAssetsPath 属性来获得这一文件夹路径。
特点:

  • PC端可读写,移动端只读不可写。
  • 主要用来存放二进制文件,配置文件。
  • 注意,在Android中,StreamingAssets中的文件包含在一个.jar压缩文件(基本上与标准的zip为统一格式)中,所以移动端时只能用过UnityWebRequest类来读取。在PC下,可以用File类API(如File.ReadAllText)读写StreamingAssets文件夹中的文件;在IOS和Android平台下,不能用File类API读取。
  • 任何平台都可以用www方式异步读取该文件夹内容。PC和IOS平台下,读取路径必须加上"file://",而安卓不需要。
  • 在IOS和Android下,还能用AssetBundle.LoadFromFile来同步读取数据。

3、PersistentDataPath

这个路径下是可读写。而且在IOS上就是应用程序的沙盒,但是在Android可以是程序的沙盒,也可以是sdcard。并且在Android打包的时候,ProjectSetting页面有一个选项Write Access,可以设置它的路径是沙盒还是sdcard。
特点:

  • 可读写,不过只能运行时才能写入或者读取。 提前将数据存入这个路径是不可行的。
  • 无内容限制。你可以从 StreamingAsset 中读取二进制文件或者从 AssetBundle 读取文件来写入 PersistentDataPath 中。
  • 写下的文件,可以在电脑上查看。同样也可以清掉。
  • 可以使用UnityWebRequest类来读取。
  • 可以用File类API(如File.ReadAllText)读写PersistentDataPath文件夹中的文件(安卓下唯一可以用File类的路径)

4、Application.DataPath

注意移动端是没有访问权限的。在PC端和Editor模式时,可读可写。