包含此页的版本:
不含此页的版本:
StreamingAssets是一个保留文件夹,可用于使文件直接可供播放器构建,并绕过标准项目构建过程。标准构建过程序列化场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个唯一的关卡。在每个场景中,您可以放置环境、障碍物和装饰,实质上是分部分设计和构建游戏。更多信息
请参阅术语表和资源转换为生成的播放器中的二进制文件。StreamingAssets允许您添加已采用目标平台正确格式的文件,并且您的应用程序可以直接加载这些文件。
示例用法包括:
这StreamingAssets文件夹必须位于Assets文件夹位于Assets/StreamingAssets. 名称区分大小写,必须是StreamingAssets完全。 此目录中的任何文件都会复制到播放器输出中,而无需修改。当部署到目标设备时,文件将复制到适合平台的位置。
提示:为了避免 Unity 自动导入每个文件的开销StreamingAssets,您可以通过调用AddAdditionalPathToStreamingAssets从实现BuildPlayerProcessor.PrepareForBuild. 例如,如果您的内容很大且生成,则此功能非常有用。
的位置StreamingAssets文件夹因平台而异。要检索StreamingAssets文件夹,请使用Application.streamingAssetsPath属性,因为它始终指向当前主机平台上的正确位置。
在大多数平台上Application.streamingAssetsPath是一个可以使用常规文件系统 API 访问的目录。
在 Android 和 Web 平台上,无法通过文件系统 API 直接访问流式资产文件,因为这些平台会返回一个 URL。使用UnityWebRequest类来访问内容。
以下示例从StreamingAssets文件夹:
using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
// Example of loading a file from the StreamingAssets folder
// This assumes that a file "config.json" has been placed in the Assets/StreamingAssets folder
public class LoadStreamingAssets : MonoBehaviour
{
void Start()
{
StartCoroutine(LoadFile());
}
IEnumerator LoadFile()
{
string jsonData = "";
string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, "config.json");
if (filePath.StartsWith("jar") || filePath.StartsWith("http"))
{
// Special case to access StreamingAsset content on Android and Web
UnityWebRequest request = UnityWebRequest.Get(filePath);
yield return request.SendWebRequest();
if (request.result == UnityWebRequest.Result.Success)
{
jsonData = request.downloadHandler.text;
}
}
else
{
// This is a regular file path on most platforms and in playmode of the editor
jsonData = System.IO.File.ReadAllText(filePath);
}
Debug.Log("Loaded JSON Data: " + jsonData);
}
}
StreamingAssetslocation 是只读的,您无法修改或向其写入新文件。要写入文件,您可以使用Application.persistentDataPath相反。StreamingAssets文件夹。 这些文件类型必须由播放器或资产包构建处理,才能在运行时加载。StreamingAssets文件夹在脚本编译期间不包括在内。这StreamingAssets文件夹很有用,如果您打算分发AssetBundles直接在 Player 安装中,而不是按需下载。
为此,请执行以下作:
Assets/StreamingAssets. 注意:运行时不需要与 AssetBundle 文件一起生成的 .manifest 文件,可以删除。有关更多信息,请参阅 AssetBundles 文件格式。Application.streamingAssetsPath以确定 AssetBundle 的路径。根据平台的不同,您可以将它们作为本地文件路径加载,也可以使用 UnityWebRequestAssetBundle 加载。注意:在 Android 上,无需缓存 AssetBundle 或执行 CRC 检查,因为该文件已存在于本地存储中。Addressables 包会自动对本地内容使用此机制。
或者,AssetBundle 和 Addressables 可以托管在远程服务器上并按需下载,而不是使用StreamingAssets文件夹。对于内容较大或经常更新的情况,或者您希望在想要更改或添加新内容时避免发布新 Player 版本的开销,这是首选。