Unity 在构建项目时将大多数资源整合到项目中。但是,将文件放入目标计算机上的普通文件系统以使其可通过路径名访问有时会很有用。这方面的一个例子是在 iOS 设备上部署电影文件;原始电影文件必须位于文件系统中的某个位置以便由 PlayMovie
函数进行播放。
Unity 会将放置在 Unity 项目中名为 StreamingAssets__(区分大小写)的文件夹中的所有文件逐字复制到目标计算机上的特定文件夹。要获取此文件夹,请使用 Application.streamingAssetsPath 属性。在任何情况下,最好使用 Application.streamingAssetsPath
来获取 StreamingAssets__ 文件夹的位置,因为它总是指向运行应用程序的平台上的正确位置。
Application.streamingAssetsPath
返回的位置因平台而异:
Application.dataPath + "/StreamingAssets"
。Application.dataPath + "/Resources/Data/StreamingAssets"
。Application.dataPath + "/Raw"
。"jar:file://" + Application.dataPath + "!/assets"
。要在无法直接访问流媒体资源文件的平台(如 Android 和 WebGL)上读取流媒体资源,请使用 UnityWebRequest。有关示例,请参阅 Application.streamingAssetsPath。
在许多平台上,流媒体资源文件夹位置是只读的;您不能在运行时在这些位置修改或写入新文件。请使用 Application.persistentDataPath 来获取可写的文件夹位置。
注意:位于 StreamingAssets 文件夹中的 .dll 和脚本文件不参与脚本编译。
也可以通过资源包 (Asset Bundle) 或可寻址资源 (Addressable) 来访问不属于常规游戏构建数据的内容,在许多情况下,这些访问方式优于流媒体资源 (Streaming Assets) 文件夹。