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