【Unity】生成AB包,加载AB包
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...
}
}