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
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:
Application.dataPath + "/StreamingAssets",
Application.dataPath + "/Resources/Data/StreamingAssets",
Application.dataPath + "/Raw",
"jar:file://" + Application.dataPath + "!/assets".
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.