com.alicizax.unity.tuyoogam.../Samples~/Test Sample/Runtime/T2_TestBuldinFileSystem/TestBundleReference.cs

72 lines
2.2 KiB
C#
Raw Normal View History

2025-09-02 19:21:49 +08:00
using System;
using System.IO;
using System.Text;
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.U2D;
using UnityEngine.TestTools;
using NUnit.Framework;
using YooAsset;
public class TestBundleReference
{
public IEnumerator RuntimeTester()
{
ResourcePackage package = YooAssets.GetPackage(TestDefine.AssetBundlePackageName);
Assert.IsNotNull(package);
// 加载HeroA
{
var assetHandle = package.LoadAssetAsync<GameObject>("hero_a");
yield return assetHandle;
Assert.AreEqual(EOperationStatus.Succeed, assetHandle.Status);
var pos = new Vector3(-1, -1, 0);
var go = assetHandle.InstantiateSync(pos, Quaternion.identity);
Assert.IsNotNull(go);
}
// 加载HeroB
AssetHandle heroHandle;
GameObject heroObject;
{
heroHandle = package.LoadAssetAsync<GameObject>("hero_b");
yield return heroHandle;
Assert.AreEqual(EOperationStatus.Succeed, heroHandle.Status);
var pos = new Vector3(1, -1, 0);
heroObject = heroHandle.InstantiateSync(pos, Quaternion.identity);
Assert.IsNotNull(heroObject);
}
// 卸载HeroB
{
heroHandle.Release();
GameObject.Destroy(heroObject);
yield return new WaitForEndOfFrame();
}
// 清理未使用资源
{
var operation = package.UnloadUnusedAssetsAsync();
yield return operation;
Assert.AreEqual(EOperationStatus.Succeed, operation.Status);
}
// 再次加载HeroB
{
heroHandle = package.LoadAssetAsync<GameObject>("hero_b");
yield return heroHandle;
Assert.AreEqual(EOperationStatus.Succeed, heroHandle.Status);
var pos = new Vector3(1, -1, 0);
heroObject = heroHandle.InstantiateSync(pos, Quaternion.identity);
Assert.IsNotNull(heroObject);
// 检测材质球关联的纹理是否为空
var mat = heroObject.GetComponent<MeshRenderer>().material;
Assert.IsNotNull(mat.mainTexture);
}
}
}