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。 |