Unity中persistentDataPath, dataPath, streamingAssetsPath在不同的平台对应的路径

为了方便以后的开发,自己结合官方资料和自己的实际开发,把上面的路径变量在不同的平台对应的正式路径总结一下


  • Application.persistentDataPath
    官方参考:https://docs.unity3d.com/2020.3/Documentation/ScriptReference/Application-persistentDataPath.html
    1. 对app是只读的,对玩家来说读写都可以,如果是IOS或者安卓,该路径指向设备的公共目录
    2. app更新的时候,不会删除该目录,但是用户自己是可以对该目录增删改查的
    平台指向的位置
    Windows Store Apps%userprofile%\AppData\Local\Packages<productname>\LocalState
    Windows Editor and Standalone Player%userprofile%\AppData\LocalLow<companyname><productname>
    WebGL/idbfs/<md5 hash of data path> 该路径是URL最后一个斜杠“/”和“?”之间的字符串
    Linux$XDG_CONFIG_HOME/unity3d 或者$HOME/.config/unity3d
    iOS/var/mobile/Containers/Data/Application/<guid>/Documents
    tvOS不支持且返回空字符串
    Android通常指向/storage/emulated/0/Android/data/<packagename>/files,有的老机型可能指向SD卡的路径
    Mac指向用户的Library目录,通常该目录是隐藏的,现在Unity是指向~/Library/Application Support/company name/product name

  • Application.dataPath
    官方参考:https://docs.unity3d.com/2020.3/Documentation/ScriptReference/Application-streamingAssetsPath.html

    1. 对玩家和app都是只读的,是指设备的游戏目录,只能读取
    2. 根据不同的平台,游戏目录不一样
    平台指向位置
    Unity Editor<项目路径>/Assets
    Mac player<path to player app bundle>/Contents
    iOS player<path to player app bundle>/<AppName.app>/Data
    Win/Linux player<游戏的可执行文件的数据目录> (请注意Linux目录是大小写敏感的,window不是)
    WebGL玩家数据目录的绝对URL(没有具体的文件名)
    Android通常指向APK,如果你使用的是安卓分包,那么它指向OBB(也就是说游戏数据文件都保存到了OBB文件中)
    Windows Store Apps是一个指向玩家数据目录的绝对路径

    注意:PC上返回的路径是用反斜杠(“\”)做分割的


  • streamingAssetsPath
    官方参考: https://docs.unity3d.com/2020.3/Documentation/ScriptReference/Application-streamingAssetsPath.html
    1. 对玩家和app都是只读的
    2. 都是指向Unity的StreamingAssets文件夹
    平台项目路径
    Unity Editor<项目路径>/Assets/StreamingAssets
    Mac Player<path to player app bundle>/Contents/Resources/Data/StreamingAssets
    IOS Player<path to player app bundle>/<AppName.app>/Data/Raw
    Win/Linux player<游戏的可执行文件的数据目录>/StreamingAssets
    WebGL<玩家数据目录的绝对URL>/StreamingAssets
    AndroidApplication.dataPath + “!/assets”

  • 如果用UnityWebRequest来获取文件,传入的路径参数
    官方参考:https://docs.unity3d.com/Manual/StreamingAssets.html
    平台项目路径
    Unity EditorApplication.streamingAssetsPath/文件名
    Mac PlayerApplication.streamingAssetsPath/文件名
    IOS Player“file://” + Application.dataPath + “/Raw/” + 文件名;
    Win/Linux playerApplication.streamingAssetsPath + “/” + 文件名
    WebGLApplication.streamingAssetsPath + “/” + 文件名(Unity会自动把Application.streamingAssetsPath转换为对应的URL)
    Android“jar:file://” + Application.dataPath + “!/assets/” + 文件名