Application.streamingAssetsPath
Declaration
public static string streamingAssetsPath;Описание
Путь к папке StreamingAssets (только для чтения).
Используйте StreamingAssets папку для хранения ассетов. Создайте ее в вашем проекте Ассеты/StreamingAssets. Во время выполнения, Application.streamingAssetsPath В построенном проигрывателе местоположение StreamingAssets может отличаться от папки проекта, поэтому всегда используйте Application.streamingAssetsPath. Добавить имя ассета в Application.streamingAssetsPath. Построенное приложение может загрузить ассет по этому адресу. Вы можете использовать Debug.Log класс, чтобы вывести путь к StreamingAssets папку в консоль Unity.
Вы не можете использовать синхронную файловую систему APIs, например C# System.IO.File класс, чтобы обратиться к StreamingAssets папки на платформах WebGL и Android. Доступ к файлам недоступен на WebGL. Android использует сжатый файл .apk файл. Эти платформы возвращают URL. Используйте UnityWebRequest класс, чтобы обращаться к ассетам.
Вы можете добавить потоковые ресурсы в сборку Player, не помещая их в StreamingAssets папка с помощью BuildPlayerProcessor.PrepareForBuild. Это полезно для включения файлов, расположенных вне вашего проекта Unity.
using 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"; } } } }
Следующий пример кода демонстрирует, как получить доступ к файлу в папке StreamingAssets на платформах Android (и аналогичным образом WebGL). На платформах Android и WebGL Application.streamingAssetsPath рассматривается как URL и используются UnityWebRequest (не синхронная файловая система APIs, такая как System.IO.File) для чтения StreamingAssets.
using 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); } } }