Version: 2021.3
Language : English
Loading Resources at Runtime
Modifying Source Assets Through Scripting

Streaming Assets

Unity combines most Assets into a Project when it builds the Project. However, it is sometimes useful to place files into the normal filesystem on the target machine to make them accessible via a pathname. An example of this is the deployment of a movie file on iOSApple’s mobile operating system. More info
See in Glossary
devices; the original movie file must be available from a location in the filesystem to be played by the PlayMovie function.

Unity copies any files placed in the folder called StreamingAssets (case-sensitive) in a Unity Project verbatim to a particular folder on the target machine. To retrieve the folder, use the Application.streamingAssetsPath property. It’s always best to use Application.streamingAssetsPath to get the location of the StreamingAssets folder, as it always points to the correct location on the platform where the application is running.

The location returned by Application.streamingAssetsPath varies per platform:

  • Most platforms (Unity Editor, Windows, Linux players) use Application.dataPath + "/StreamingAssets",
  • macOS player uses Application.dataPath + "/Resources/Data/StreamingAssets",
  • iOS uses Application.dataPath + "/Raw",
  • Android uses files inside a compressed APKThe Android Package format output by Unity. An APK is automatically deployed to your device when you select File > Build & Run. More info
    See in Glossary
    /JAR file, "jar:file://" + Application.dataPath + "!/assets".

To read streaming Assets on platforms like Android and WebGLA JavaScript API that renders 2D and 3D graphics in a web browser. The Unity WebGL build option allows Unity to publish content as JavaScript programs which use HTML5 technologies and the WebGL rendering API to run Unity content in a web browser. More info
See in Glossary
, where you cannot access streaming Asset files directly, use UnityWebRequest. For an example, see Application.streamingAssetsPath.

On many platforms, the streaming assets folder location is read-only; you can not modify or write new files there at runtime. Use Application.persistentDataPath for a folder location that is writable.

Note: .dll and script files located in the StreamingAssets folder don’t participate in the script compilation.

Asset Bundles or Addressables are alternative ways of accessing content that is not part of regular game build data, and in many cases are preferred over Streaming Assets folder.

Loading Resources at Runtime
Modifying Source Assets Through Scripting