版本: Unity 6 (6000.0)
语言英语
  • C#

Application.streamingAssetsPath

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交内容,但我们会阅读用户提出的每个建议更改,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您花时间帮助我们提高 Unity 文档的质量。

关闭

取消

public static string streamingAssetsPath;

描述

指向 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); } } }