最简单的和Prefab和一样通过面板实例化
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
using UnityEngine.Video;
public class AssetRefData : MonoBehaviour
{
//通过面板实例化
[SerializeField] private AssetReference aRef=null;
[SerializeField] private List<AssetReference> references=new List<AssetReference>();
[SerializeField] private List<GameObject> completedObjs = new List<GameObject>();
private void Start()
{
references.Add(aRef);
StartCoroutine(loadUnitlCompleted());
}
IEnumerator loadUnitlCompleted()
{
yield return AssetRefLoader.CreateAssetAddToList<GameObject>(references, completedObjs);
yield return new WaitForSeconds(2);
ReleaseObj(completedObjs[0]);
}
private void ReleaseObj(GameObject obj)
{
Addressables.ReleaseInstance(obj);
}
}
using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.AddressableAssets;
public static class AssetRefLoader
{
public static async Task CreateAssetAddToList<T>
(AssetReference reference,List<T> completedObjs)where T:Object
{
completedObjs.Add(await reference.InstantiateAsync().Task as T );
}
public static async Task CreateAssetAddToList<T>
(List<AssetReference> reference, List<T> completedObjs) where T : Object
{
for (int i = 0; i < reference.Count; i++)
{
completedObjs.Add(await reference[i].InstantiateAsync().Task as T);
}
}
}
本文介绍了一种在Unity中使用AssetReferences通过面板实例化Prefab的简单方法,展示了如何使用AssetRefData类和AssetRefLoader静态类实现这一过程,包括加载和释放实例。
632

被折叠的 条评论
为什么被折叠?



