Version: 2020.3

AssetBundle

class in UnityEngine

切换到手册

描述

AssetBundle 允许您通过 UnityWebRequest 类流式传输其他资源,并在运行时实例化这些资源。AssetBundle 通过 BuildPipeline.BuildAssetBundle 创建。

注意,不同平台的捆绑包互不兼容。为任何独立 平台构建的捆绑包只能在该平台上加载。 例如,为 iOS 构建的捆绑包不兼容 Android,反之亦然。其区别之一在于, 捆绑包在不同的设备上使用不同的着色器及纹理。

另请参阅:UnityWebRequestAssetBundle.GetAssetBundle在运行时加载资源BuildPipeline.BuildAssetBundle

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

public class SampleBehaviour : MonoBehaviour { IEnumerator Start() { var uwr = UnityWebRequestAssetBundle.GetAssetBundle("http://myserver/myBundle.unity3d"); yield return uwr.SendWebRequest();

// Get an asset from the bundle and instantiate it. AssetBundle bundle = DownloadHandlerAssetBundle.GetContent(uwr); var loadAsset = bundle.LoadAssetAsync<GameObject>("Assets/Players/MainPlayer.prefab"); yield return loadAsset;

Instantiate(loadAsset.asset); } }

变量

isStreamedSceneAssetBundle如果 AssetBundle 为流式传输的场景 AssetBundle,则返回 true。

公共函数

Contains检查 AssetBundle 是否包含特定对象。
GetAllAssetNames返回 AssetBundle 中的所有资源名称。
GetAllScenePaths返回 AssetBundle 中的所有场景资源路径(*.unity 资源的路径)。
LoadAllAssets加载资源捆绑包中继承自 type 的所有资源。
LoadAllAssetsAsync异步加载资源捆绑包中的所有资源。
LoadAsset从捆绑包中加载名为 name 的资源。
LoadAssetAsync从捆绑包中异步加载名为 name 的资源。
LoadAssetWithSubAssets从捆绑包中加载名为 name 的资源和子资源。
LoadAssetWithSubAssetsAsync从捆绑包中异步加载资源,该资源具有名为 name 的子资源。
Unload卸载 AssetBundle 释放其数据。

静态函数

GetAllLoadedAssetBundles当您需要获取当前已加载的所有资源捆绑包的列表时,可以使用该函数。
LoadFromFile从磁盘上的文件同步加载 AssetBundle。
LoadFromFileAsync从磁盘上的文件异步加载 AssetBundle。
LoadFromMemory从内存区域同步创建 AssetBundle。
LoadFromMemoryAsync从内存区域异步创建 AssetBundle。
LoadFromStream从托管 Stream 同步加载 AssetBundle。
LoadFromStreamAsync从托管 Stream 异步加载 AssetBundle。
RecompressAssetBundleAsync异步将下载/存储的 AssetBundle 从一个 BuildCompression 再压缩为另一个。
UnloadAllAssetBundles卸载当前已加载的所有 AssetBundle。