Files
YooAsset/Assets/Samples~/TestSample/Scripts/TestScene.cs
2022-07-18 14:59:15 +08:00

221 lines
5.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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
}