资源加载模块
泰课指路牌:https://www.taikr.com/course/1062/task/31006/show.
在游戏中经常需要加载资源,无论是从AB包加载还是从Resources文件夹加载等,加载的过程使用同步加载都需要消耗一定的时间,导致游戏卡顿,我们提供一个资源加载的框架,将同步和异步加载作进一步封装,常用的一些操作如游戏物体的实例化、异步加载过程中的进度条显示等也可以在加载的过程中进行。
资源加载模块:
public class ResManager : SignleBaseManager<ResManager>
{
public T Load <T>(string resName)where T : Object
{
T resObj = Resources.Load<T>(resName);
if (resObj is GameObject)
return GameObject.Instantiate(resObj);
else
return resObj;
}
public void LoadAysnc<T>(string resName,UnityAction<T> callback) where T : Object
{
MonoMgr.getInstance().StartCoroutine(LoadAsyncCor(resName, callback));
}
public IEnumerator LoadAsyncCor<T>(string resName, UnityAction<T> callback) where T : Object
{
ResourceRequest R = Resources.LoadAsync<T>(resName);
yield return R;
if (R.asset is GameObject)
callback(GameObject.Instantiate(R.asset) as T);
else
callback(R.asset as T);
}
}
使用:
public class ResLoadTest : MonoBehaviour
{
void Update()
{
if (Input.GetMouseButtonDown(0))
{
ResManager.getInstance().Load<GameObject>("Test/Cube1");
}
if (Input.GetMouseButtonDown(1))
{
ResManager.getInstance().LoadAysnc<GameObject>("Test/Sphere1", (obj) => {
obj.transform.localScale *= 2;
});
}
}
}
相关链接 Unity程序基础框架__单例基类模块 Unity程序基础框架__缓存池模块 Unity程序基础框架__事件中心模块 Unity程序基础框架__公共Mono模块 Unity程序基础框架__场景切换模块 Unity程序基础框架__资源加载模块 Unity程序基础框架__输入控制模块 Unity程序基础框架__事件中心模块基类优化 Unity程序基础框架__音效管理模块 Unity程序基础框架__UI管理模块
|