Version: 2022.1
Method group is Obsolete

BuildPipeline.BuildStreamedSceneAssetBundle

切换到手册
Obsolete public static string BuildStreamedSceneAssetBundle (string[] levels, string locationPath, BuildTarget target);
Obsolete public static string BuildStreamedSceneAssetBundle (string[] levels, string locationPath, BuildTarget target, out uint crc);
Obsolete public static string BuildStreamedSceneAssetBundle (string[] levels, string locationPath, BuildTarget target, BuildOptions options);
Obsolete public static string BuildStreamedSceneAssetBundle (string[] levels, string locationPath, BuildTarget target, out uint crc, BuildOptions options);

参数

levels 要包含在资源包中的关卡的路径名称。
locationPath 输出资源包的路径名称。
target 将使用资源包的运行时平台。
crc 输出参数,用于接收生成的 assetbundle 的 CRC 校验和。
options 构建选项。请参阅 BuildOptions 以了解可能的值。

返回

string 带有错误消息的字符串,成功时为空。

描述

将一个或多个场景以及它们的所有依赖关系构建到压缩资源包中。

场景 AssetBundle 可以针对任何目标平台而构建,它始终会创建一个经过压缩的 unity3d 文件。

该场景可使用 UnityWebRequest 类进行下载和加载。 在下载完成后,您可以使用 UnityWebRequestAssetBundle.GetAssetBundle 来缓存已下载的场景。可选的 crc 输出参数可用于获取生成的 AssetBundle 的 CRC 校验和,该校验和可用于在使用 UnityWebRequestAssetBundle.GetAssetBundle() 下载 AssetBundles 时验证其内容。

using UnityEngine;
using UnityEditor;
using System.Collections;

public class StreamedSceneLoaderExample { // Build a streamed unity3d file. This contain one Scene that can be downloaded // on demand and loaded once its asset bundle has been loaded.

[MenuItem("Build/BuildWlayerStreamed")] public static void MyBuild() { string[] levels = new string[] {"Assets/Level1.unity"}; BuildPipeline.BuildStreamedSceneAssetBundle(levels, "Streamed-Level1.unity3d", BuildTarget.StandaloneWindows); } }

下载构建的压缩文件时,您需要调用 DownloadHandlerAssetBundle.GetContent(),以使该场景可用于 Application.LoadLevel() 和 Application.LoadLevelAdditive() 函数。

using UnityEngine;
using UnityEngine.Networking;
using System.Collections;

public class StreamedSceneLoaderExample : MonoBehaviour { IEnumerator Start() { // Download compressed Scene. If version 5 of the file named "Streamed-Level1.unity3d" was previously downloaded and cached. // Then Unity will completely skip the download and load the decompressed Scene directly from disk. var download = UnityWebRequestAssetBundle.GetAssetBundle("http://myWebSite.com/Streamed-Level1.unity3d", 5); yield return download.SendWebRequest();

// Handle error if (download.result != UnityWebRequest.Result.Success) { Debug.LogError(download.error); yield break; }

// In order to make the Scene available from LoadLevel, we have to load the asset bundle. // The AssetBundle class also lets you force unload all assets and file storage once it is no longer needed. var bundle = DownloadHandlerAssetBundle.GetContent(download);

// Load the level we have just downloaded Application.LoadLevel("Level1"); } }