levels | 要包含在资源包中的关卡的路径名称。 |
locationPath | 输出资源包的路径名称。 |
target | 将使用资源包的运行时平台。 |
crc | 输出参数,用于接收生成的 assetbundle 的 CRC 校验和。 |
options | 构建选项。请参阅 BuildOptions 以了解可能的值。 |
string 带有错误消息的字符串,成功时为空。
将一个或多个场景以及它们的所有依赖关系构建到压缩资源包中。
场景 AssetBundle 可以针对任何目标平台而构建,它始终会创建一个经过压缩的 unity3d 文件。
该场景可使用 UnityWebRequest 类进行下载和加载。
在下载完成后,您可以使用 UnityWebRequestAssetBundle.GetAssetBundle 来缓存已下载的场景。可选的 crc
输出参数可用于获取生成的 AssetBundle 的 CRC 校验和,该校验和可用于在使用 UnityWebRequestAssetBundle.GetAssetBundle() 下载 AssetBundle 时验证其内容。
using UnityEngine; using UnityEditor; using System.Collections;
public class StreamedSceneLoaderExample : MonoBehaviour { // 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.isNetworkError || download.isHttpError) { 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"); } }