unity资源管理热更必备(三)

上一篇讲到了如何打包assetsbundle,紧跟而来的就是加载assetsbundle的问题。资源的动态的加载用到Resources和AssetsBundle这两种方式,而后一种方式无论是在热更还是大小,安全等方面更具优势。下面要贴出作者一直在用的资源管理方式。

大概是利用枚举区分这两种方式,在unity编辑器里可以随意切换,打包发布时也可以根据自己的需求切换。

利用assetsbundle加载资源时,需要在启动游戏的时候,将所需的assetsbundle加载进内存,再通过具体方法加载assets bundle的资源。

这里我设置了一个最大资源加载数的选项, 因为游戏要加载的,动态生成的prefab等往往不会频繁使用,通过queue队列的方式,可以有效减少动态加载量很少的资源,常驻内存的情况。

废话不多说了,贴两张效果图



下面贴一下代码

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Object = UnityEngine.Object;
using LitJson;
using System.Linq;

enum LoadAssetsType
{
    AssetsBundle = 0,
    Resources = 1
}


public class AssetsManager : MonoBehaviour
{
    /// <summary>
    /// 单例
    /// </summary>
    private static AssetsManager _instance;
    [SerializeField]
    [Tooltip("加载资源的方式")]
    private LoadAssetsType _loadAssetsType;
    [SerializeField]
    [Tooltip("最大资源缓存数")]
    private int _maxResourcesCount = 30;
    /// <summary>
    /// 数据字典
    /// </summary>
    private Dictionary<string, Object> _dicAssets = new Dictionary<string, Object>();
    /// <summary>
    /// 资源key值的队列
    /// </summary>
    private Queue<string> _assetsName = new Queue<string>();
    ///
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值