【Unity】生成AB包,加载AB包

时间:2025-03-08 20:46:39
using System.Collections; using System.Collections.Generic; using UnityEngine; using System; public class TestLoadModel : MonoBehaviour { /// <summary> /// 所加载的AB的父物体 /// 可根据自己的项目情况调整 /// </summary> public GameObject equipParent; void Start() { LoadMode("JDModel",LoadOverStartEvent); //LoadMode("XXX路", "XXX装备", LoadOverStartEvent); } /// <summary> /// 加载建筑物 /// </summary> /// <param name="buildName"></param> /// <param name="finish"></param> private void LoadMode(string buildName, Action finish) { int index = 1; ResourcesLoadABManager.LoadAssetBundlesAnimAsync(buildName, "", BundleType.Build, (assetBundleObject) => { GameObject obj = null; if (assetBundleObject != null) { AssetBundle assetBundle = assetBundleObject.assetBundleCreateRequest.assetBundle; string[] strs = assetBundleObject.assetBundleCreateRequest.assetBundle.GetAllAssetNames(); obj = Instantiate(assetBundle.LoadAsset<GameObject>(strs[0])); obj.transform.parent = equipParent.transform; index--; if (index == 0) { finish?.Invoke(); } } }); } /// <summary> /// 加载模型、地形 /// </summary> /// <param name="terrainName"></param> /// <param name="equipName"></param> /// <param name="finish"></param> private void LoadMode(string terrainName, string equipName, Action finish) { int index = 2; ResourcesLoadABManager.LoadAssetBundlesAnimAsync(terrainName, "", BundleType.Terrain, (assetBundleObject) => { Debug.LogError("加载场景中......"); Debug.LogError("场景名称" + terrainName); GameObject obj1 = null; if (assetBundleObject != null) { AssetBundle assetBundle = assetBundleObject.assetBundleCreateRequest.assetBundle; string[] strs = assetBundleObject.assetBundleCreateRequest.assetBundle.GetAllAssetNames(); obj1 = Instantiate(assetBundle.LoadAsset<GameObject>(strs[0])); index--; if (index == 0) { finish?.Invoke(); } } }); ResourcesLoadABManager.LoadAssetBundlesAnimAsync(equipName, "", BundleType.Equip, (assetBundleObject) => { Debug.LogError("加载模型中......"); Debug.LogError("模型名称" + equipName); GameObject obj = null; if (assetBundleObject != null) { AssetBundle assetBundle = assetBundleObject.assetBundleCreateRequest.assetBundle; string[] strs = assetBundleObject.assetBundleCreateRequest.assetBundle.GetAllAssetNames(); obj = Instantiate(assetBundle.LoadAsset<GameObject>(strs[0])); obj.transform.parent = equipParent.transform; Vector3 equip_position = new Vector3(-326.505f, 37.688f, 1875.078f); Vector3 rotation = new Vector3(0f, 353.297f, 0f); obj.transform.position = equip_position; obj.transform.eulerAngles = rotation; index--; if (index == 0) { finish?.Invoke(); } } }); } /// <summary> /// 加载AB包后开始执行事件 /// </summary> private void LoadOverStartEvent() { Debug.LogError("加载AB包完成,开始事件......"); // TODO... } }