mirror of https://github.com/tuyoogame/YooAsset
221 lines
5.6 KiB
C#
221 lines
5.6 KiB
C#
using System;
|
||
using System.Collections;
|
||
using System.Threading.Tasks;
|
||
using UnityEngine;
|
||
using YooAsset;
|
||
|
||
public class TestScene : MonoBehaviour
|
||
{
|
||
public YooAssets.EPlayMode PlayMode = YooAssets.EPlayMode.EditorSimulateMode;
|
||
|
||
void Awake()
|
||
{
|
||
Application.targetFrameRate = 60;
|
||
Application.runInBackground = true;
|
||
}
|
||
void OnGUI()
|
||
{
|
||
GUIConsole.OnGUI();
|
||
}
|
||
|
||
IEnumerator Start()
|
||
{
|
||
Debug.Log($"资源系统运行模式:{PlayMode}");
|
||
|
||
// 编辑器模拟模式
|
||
if (PlayMode == YooAssets.EPlayMode.EditorSimulateMode)
|
||
{
|
||
var createParameters = new YooAssets.EditorSimulateModeParameters();
|
||
createParameters.LocationServices = new DefaultLocationServices("Assets/GameRes");
|
||
yield return YooAssets.InitializeAsync(createParameters);
|
||
}
|
||
|
||
// 单机模式
|
||
if (PlayMode == YooAssets.EPlayMode.OfflinePlayMode)
|
||
{
|
||
var createParameters = new YooAssets.OfflinePlayModeParameters();
|
||
createParameters.LocationServices = new DefaultLocationServices("Assets/GameRes");
|
||
yield return YooAssets.InitializeAsync(createParameters);
|
||
}
|
||
|
||
// 联机模式
|
||
if (PlayMode == YooAssets.EPlayMode.HostPlayMode)
|
||
{
|
||
throw new NotImplementedException();
|
||
}
|
||
|
||
// 开始测试
|
||
BeginTest();
|
||
}
|
||
|
||
void BeginTest()
|
||
{
|
||
AutoTestLog("开启单元测试 !");
|
||
|
||
// 开始同步测试
|
||
SyncTest();
|
||
}
|
||
void OverTest()
|
||
{
|
||
AutoTestLog("结束单元测试 !");
|
||
}
|
||
void AutoTestLog(string info)
|
||
{
|
||
Debug.Log($"[{Time.frameCount}] {info}");
|
||
}
|
||
|
||
#region 同步测试
|
||
void SyncTest()
|
||
{
|
||
SyncTest1();
|
||
SyncTest2();
|
||
|
||
// 开始回调测试
|
||
CallbackTest();
|
||
}
|
||
void SyncTest1()
|
||
{
|
||
AutoTestLog($"开始同步加载游戏对象测试 !");
|
||
var handle = YooAssets.LoadAssetSync<GameObject>("Entity/Cube/cube1");
|
||
Debug.Assert(handle.Status == EOperationStatus.Succeed);
|
||
var go = handle.InstantiateSync();
|
||
Debug.Assert(go != null);
|
||
GameObject.Destroy(go);
|
||
handle.Release();
|
||
}
|
||
void SyncTest2()
|
||
{
|
||
AutoTestLog($"开始同步加载TexturePacker图集测试 !");
|
||
var handle = YooAssets.LoadSubAssetsSync<Sprite>("UIAtlas/TexturePacker/tpAtlas");
|
||
Debug.Assert(handle.Status == EOperationStatus.Succeed);
|
||
var sprite = handle.GetSubAssetObject<Sprite>("Icon_Sword_128");
|
||
Debug.Assert(sprite != null);
|
||
handle.Release();
|
||
}
|
||
#endregion
|
||
|
||
#region 回调测试
|
||
void CallbackTest()
|
||
{
|
||
CallbackTest1();
|
||
}
|
||
void CallbackTest1()
|
||
{
|
||
AutoTestLog($"开始异步加载游戏对象,回调测试 !");
|
||
var handle = YooAssets.LoadAssetAsync<GameObject>("Entity/Cube/cube2");
|
||
handle.Completed += (h) =>
|
||
{
|
||
Debug.Assert(handle.Status == EOperationStatus.Succeed);
|
||
var operation = handle.InstantiateAsync();
|
||
operation.Completed += (o) =>
|
||
{
|
||
Debug.Assert(operation.Status == EOperationStatus.Succeed);
|
||
Debug.Assert(operation.Result != null);
|
||
GameObject.Destroy(operation.Result);
|
||
handle.Release();
|
||
CallbackTest2();
|
||
};
|
||
};
|
||
}
|
||
void CallbackTest2()
|
||
{
|
||
AutoTestLog($"开始异步加载原生文件,回调测试 !");
|
||
var operation = YooAssets.GetRawFileAsync("Config/config2");
|
||
operation.Completed += (o) =>
|
||
{
|
||
Debug.Assert(operation.Status == EOperationStatus.Succeed);
|
||
|
||
// 开始协程测试
|
||
this.StartCoroutine(CoroutineTest());
|
||
};
|
||
}
|
||
#endregion
|
||
|
||
#region 协程测试
|
||
IEnumerator CoroutineTest()
|
||
{
|
||
yield return CoroutineTest1();
|
||
yield return CoroutineTest2();
|
||
|
||
//开始Task测试
|
||
TaskTest();
|
||
}
|
||
IEnumerator CoroutineTest1()
|
||
{
|
||
AutoTestLog($"开始异步加载游戏对象,协程测试 !");
|
||
var handle = YooAssets.LoadAssetAsync<GameObject>("Entity/Cube/cube3");
|
||
yield return handle;
|
||
Debug.Assert(handle.Status == EOperationStatus.Succeed);
|
||
var operation = handle.InstantiateAsync();
|
||
yield return operation;
|
||
Debug.Assert(operation.Status == EOperationStatus.Succeed);
|
||
Debug.Assert(operation.Result != null);
|
||
GameObject.Destroy(operation.Result);
|
||
handle.Release();
|
||
}
|
||
IEnumerator CoroutineTest2()
|
||
{
|
||
AutoTestLog($"开始异步加载原生文件,协程测试 !");
|
||
var operation = YooAssets.GetRawFileAsync("Config/config3");
|
||
yield return operation;
|
||
Debug.Assert(operation.Status == EOperationStatus.Succeed);
|
||
yield return operation;
|
||
Debug.Assert(operation.Status == EOperationStatus.Succeed);
|
||
}
|
||
#endregion
|
||
|
||
#region Task测试
|
||
async void TaskTest()
|
||
{
|
||
await TaskTest1();
|
||
await TaskTest2();
|
||
|
||
// 开始错误测试
|
||
ErrorTest();
|
||
}
|
||
async Task TaskTest1()
|
||
{
|
||
AutoTestLog($"开始异步加载游戏对象,Task测试 !");
|
||
var handle = YooAssets.LoadAssetAsync<GameObject>("Entity/Cube/cube4");
|
||
await handle.Task;
|
||
Debug.Assert(handle.Status == EOperationStatus.Succeed);
|
||
var operation = handle.InstantiateAsync();
|
||
await operation.Task;
|
||
Debug.Assert(operation.Status == EOperationStatus.Succeed);
|
||
Debug.Assert(operation.Result != null);
|
||
GameObject.Destroy(operation.Result);
|
||
handle.Release();
|
||
}
|
||
async Task TaskTest2()
|
||
{
|
||
AutoTestLog($"开始异步加载原生文件,Task测试 !");
|
||
var operation = YooAssets.GetRawFileAsync("Config/config4");
|
||
await operation.Task;
|
||
Debug.Assert(operation.Status == EOperationStatus.Succeed);
|
||
await operation.Task;
|
||
Debug.Assert(operation.Status == EOperationStatus.Succeed);
|
||
}
|
||
#endregion
|
||
|
||
#region 错误测试
|
||
void ErrorTest()
|
||
{
|
||
AutoTestLog($"开始错误加载的测试 !");
|
||
|
||
var handle1 = YooAssets.LoadAssetSync<GameObject>("");
|
||
Debug.Assert(handle1.Status == EOperationStatus.Failed);
|
||
|
||
var handle2 = YooAssets.LoadAssetSync<GameObject>("xxx1");
|
||
Debug.Assert(handle2.Status == EOperationStatus.Failed);
|
||
|
||
var result = YooAssets.IsNeedDownloadFromRemote("xxx2");
|
||
Debug.Assert(result == false);
|
||
|
||
var operaiton = YooAssets.GetRawFileAsync("xxx3");
|
||
Debug.Assert(operaiton.Status == EOperationStatus.Failed);
|
||
|
||
// 结束测试
|
||
OverTest();
|
||
}
|
||
#endregion
|
||
} |