用于访问 AssetBundle 文件内容的 API。
此类通过静态方法公开了一个 API,用于加载和管理 AssetBundle。
此类还提供非静态方法和属性,用于公开特定已加载 AssetBundle 的内容,包括从 AssetBundle 中加载资源的能力。
通过调用 BuildPipeline.BuildAssetBundles 或使用 Addressables 包 创建 AssetBundle。构建过程会生成一个或多个 AssetBundle 文件,每个 AssetBundle 文件都包含此类的序列化实例。
注意:AssetBundle.LoadAsset 和其他 Load 方法不支持从 AssetBundle 加载场景。相反,在运行时,您加载流式场景 AssetBundle,然后使用场景名称调用 SceneManager.LoadScene 或 SceneManager.LoadSceneAsync。在编辑器中,不支持从 AssetBundle 加载场景,因此对 EditorSceneManager.OpenScene 的调用将失败,并显示找不到场景文件的错误。
其他资源:AssetBundle 简介、UnityWebRequestAssetBundle.GetAssetBundle、BuildPipeline.BuildAssetBundles。
using System.Collections; using UnityEngine; using UnityEngine.Networking;
public class SampleBehaviour : MonoBehaviour { IEnumerator Start() { var uwr = UnityWebRequestAssetBundle.GetAssetBundle("https://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);
bundle.Unload(true); } }
memoryBudgetKB | 控制共享 AssetBundle 加载缓存的大小。默认值为 1MB。 |
isStreamedSceneAssetBundle | 如果 AssetBundle 包含 Unity 场景文件,则返回 true |
Contains | 检查 AssetBundle 是否包含特定对象。 |
GetAllAssetNames | 返回 AssetBundle 中的所有资源名称。 |
GetAllScenePaths | 返回 AssetBundle 中所有场景的名称。 |
LoadAllAssets | 同步加载 AssetBundle 中包含的所有资源。 |
LoadAllAssetsAsync | 异步加载 AssetBundle 中包含的所有资源。 |
LoadAsset | 同步从 AssetBundle 加载资源。 |
LoadAssetAsync | 异步从包中加载资源。 |
LoadAssetWithSubAssets | 同步加载 AssetBundle 中的资源及其子资源。 |
LoadAssetWithSubAssetsAsync | 异步加载 AssetBundle 中的资源及其子资源。 |
Unload | 卸载 AssetBundle 并释放其数据。 |
UnloadAsync | 卸载包中的资源。 |
GetAllLoadedAssetBundles | 获取当前已加载的所有 AssetBundle 的枚举。 |
LoadFromFile | 同步从磁盘上的文件加载 AssetBundle。 |
LoadFromFileAsync | 异步从磁盘上的文件加载 AssetBundle。 |
LoadFromMemory | 同步从内存区域加载 AssetBundle。 |
LoadFromMemoryAsync | 异步从内存区域加载 AssetBundle。 |
LoadFromStream | 同步从托管流加载 AssetBundle。 |
LoadFromStreamAsync | 异步从托管流加载 AssetBundle。 |
RecompressAssetBundleAsync | 异步将下载/存储的 AssetBundle 从一种 BuildCompression 重新压缩到另一种。 |
UnloadAllAssetBundles | 卸载当前已加载的所有 AssetBundle。 |
GetInstanceID | 获取对象的实例 ID。 |
ToString | 返回对象的名称。 |
Destroy | 移除 GameObject、组件或资源。 |
DestroyImmediate | 立即销毁对象 obj。强烈建议使用 Destroy 代替。 |
DontDestroyOnLoad | 加载新场景时不要销毁目标对象。 |
FindAnyObjectByType | 检索任何类型为 type 的活动加载对象。 |
FindFirstObjectByType | 检索类型为 type 的第一个活动加载对象。 |
FindObjectsByType | 检索类型为 type 的所有加载对象的列表。 |
Instantiate | 克隆对象 original 并返回克隆。 |
InstantiateAsync | 捕获原始对象(必须与某个 GameObject 相关)的快照并返回 AsyncInstantiateOperation。 |
bool | 对象是否存在? |
operator != | 比较两个对象是否引用不同的对象。 |
operator == | 比较两个对象引用是否引用同一个对象。 |