streamingAssetsPath
The path to the StreamingAssets folder (Read Only).
Read time 2 minutesLast updated 4 days ago
Definition
- Type: Property
- Namespace: UnityEngine
- Assembly: UnityEngine.CoreModule
public static string streamingAssetsPath { get; }
Remarks
Use the folder to store assets. Create it in your project at Assets/StreamingAssets. At runtime, provides the path to the folder. In a built Player, the StreamingAssets location can differ from the project folder, so always use . Add the asset name to . The built application can load the asset at this address. You can use the Debug.Log class to print the path to the folder to the Unity Console.
StreamingAssetsApplication.streamingAssetsPathApplication.streamingAssetsPathApplication.streamingAssetsPathStreamingAssetsYou cannot use synchronous filesystem APIs, such as the C# class, to access the folder on the WebGL and Android platforms. No file access is available on WebGL. Android uses a compressed file. These platforms return a URL. Use the UnityWebRequest class to access the assets.
System.IO.FileStreamingAssets.apkYou can add streaming assets to the Player build without placing them in the folder by using BuildPlayerProcessor.PrepareForBuild. This is useful for including files located outside your Unity project.
StreamingAssetsusing UnityEngine;using System.IO;using UnityEngine.Video;// Application-streamingAssetsPath example.//// Play a video and let the user stop/start it.// The video location is StreamingAssets. The video is// played on the camera background.public class Example : MonoBehaviour{ private UnityEngine.Video.VideoPlayer videoPlayer; private string status; void Start() { GameObject cam = GameObject.Find("Main Camera"); videoPlayer = cam.AddComponent<UnityEngine.Video.VideoPlayer>(); // Obtain the location of the video clip. videoPlayer.url = Path.Combine(Application.streamingAssetsPath, "SampleVideo_1280x720_5mb.mp4"); // Restart from beginning when done. videoPlayer.isLooping = true; // Do not show the video until the user needs it. videoPlayer.Pause(); status = "Press to play"; } void OnGUI() { GUIStyle buttonWidth = new GUIStyle(GUI.skin.GetStyle("button")); buttonWidth.fontSize = 18 * (Screen.width / 800); if (GUI.Button(new Rect(Screen.width / 16, Screen.height / 16, Screen.width / 3, Screen.height / 8), status, buttonWidth)) { if (videoPlayer.isPlaying) { videoPlayer.Pause(); status = "Press to play"; } else { videoPlayer.Play(); status = "Press to pause"; } } }}
The following code example demonstrates how to access a file in the folder on Android (and similarly WebGL) platforms. On both Android and WebGL, treat as a URL and use UnityWebRequest (not synchronous filesystem APIs such as ) to read StreamingAssets.
StreamingAssetsApplication.streamingAssetsPathSystem.IO.Fileusing UnityEngine;using UnityEngine.Networking;using System.Threading.Tasks;public class LoadStreamingAsset : MonoBehaviour{ async void Start() { string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, "filetoload.txt"); UnityWebRequest request = UnityWebRequest.Get(filePath); UnityWebRequestAsyncOperation operation = request.SendWebRequest(); while (!operation.isDone) { await Task.Yield(); } if (request.result == UnityWebRequest.Result.Success) { Debug.Log(request.downloadHandler.text); } else { Debug.LogError("Cannot load file at " + filePath); } }}