指向 StreamingAssets
文件夹的路径(只读)。
使用 StreamingAssets
文件夹来存储资源。在运行时,Application.streamingAssetsPath
提供文件夹的路径。将资源名称添加到 Application.streamingAssetsPath
中。构建后的应用程序可以从此地址加载资源。可以使用 Debug.Log 类将 StreamingAssets
文件夹的路径打印到 Unity 控制台。
在 WebGL 和 Android 平台上,您无法使用同步文件系统 API(如 C# System.IO.File
类)来访问 StreamingAssets
文件夹。WebGL 不允许进行文件访问。Android 使用压缩的 .apk
文件。这些平台会返回一个 URL。使用 UnityWebRequest 类来访问资源。
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"; } } } }
以下代码示例演示了如何在 Android 平台上的 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); } } }