Eevee框架9——Resources文件夹加载

到这里为止我们都是仿照唐老师的教程造轮子,略作优化,这里唐老师加载资源暂时用的是Resources.Load。我打算使用最新的Addressable,因此Addressable加载部分暂时往后放一放,我们最后再处理Addressable加载问题。

这里先继续引用一下唐老师的Resources文件夹资源加载工具:

using System;
using System.Collections;
using UnityEngine;
using Object = UnityEngine.Object;

/// <summary>
/// Resources文件夹资源加载工具
/// </summary>
public class ResourceUtil : Singleton<ResourceUtil>
{
    /// <summary>
    /// 同步加载资源
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="name">资源名</param>
    /// <returns></returns>
    public T Load<T>(string name) where T : Object
    {
        T obj = Resources.Load<T>(name);
        if (obj is GameObject)
            return GameObject.Instantiate(obj);
        else
            return obj;
    }

    /// <summary>
    /// 异步加载资源
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="name">资源名</param>
    /// <param name="action">回调</param>
    public void LoadAsyn<T>(string name, Action<T> action) where T : Object
    {
        //使用MonoManager调用协程(因为ResourceMgr没有继承MonoBehavior)
        MonoUtil.Instance.StartCoroutine(LoadAsynIE<T>(name, action));
    }

    /// <summary>
    /// 协程异步加载资源
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="name">资源名</param>
    /// <param name="action">回调</param>
    /// <returns></returns>
    private IEnumerator LoadAsynIE<T>(string name, Action<T> action) where T : Object
    {
        ResourceRequest r = Resources.LoadAsync<T>(name);
        yield return r;
        if (r.asset is GameObject)
            action(GameObject.Instantiate(r.asset) as T);
        else
            action(r.asset as T);
    }
}

暂停一下

到目前为止,大部分的代码都是仿照唐老师的框架写的代码,但本人的目标其实是期望写出凉鞋的QF那种框架代码。唐老师的框架其实过于简单化,并且更多适用于小型项目或者小型游戏。因此后续的音频管理等等暂时不借鉴了。

现在框架的思路暂时转变一下,下面是后续的计划:
1.学习UniRx作为主要的逻辑支撑
2.找到一个简单易用的UI框架,如果实在没有则仿制凉鞋QF
3.编写Addressable架构处理

因此本系列先暂停一下,咱们去学一下UniRx~重新开一个系列咯

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值