阿里云爆款
首页 » .NET » unity资源管理-简单资源池

unity资源管理-简单资源池

原文 http://blog.csdn.net/u014261855/article/details/79051229

2018-01-14 02:00:13阅读(190)

阿里云爆款

最近太忙 一直没空更博,今天奉上一个简单的资源池管理器,话不多说,直接上源码

(还是多说一句:如果有需要帮助的同学,发邮件到我的邮箱就可以,邮箱放在简介里面了,平时不上csdn,私信可能读不到的)

using unityEngine;
using System.Collections;
using System.Collections.Generic;
public enum MonsterKey
{
    Monster0 = 0,
}
public enum BulletKey
{
    Bullet0 = 0,
}
public enum TankKey
{
    Tank0 = 0,
}
public class MemoryPoor : MonoBehaviour {
    Dictionary<MonsterKey, GameObject> m_MonsterPoor = new Dictionary<MonsterKey, GameObject>();
    Dictionary<TankKey, GameObject> m_TankPoor = new Dictionary<TankKey, GameObject>();
    Dictionary<BulletKey, GameObject> m_BulletPoor = new Dictionary<BulletKey, GameObject>();
    private static MemoryPoor _instance;
    public static MemoryPoor Instance
    {
        get { return _instance; }
    }
    void Awake()
    {
        if (_instance == null)
        {
            _instance = this;
        }
    }
    // Use this for initialization
    void Start () {
        m_BulletPoor.Add(BulletKey.Bullet0, Resources.Load("Prefabs/Bullet/Bullet0") as GameObject);
    }
    public GameObject GetMemory(MonsterKey key) {
        return m_MonsterPoor[key];
    }
    
    public GameObject GetMemory(TankKey key)
    {
        return m_TankPoor[key];
    }
    public GameObject GetMemory(BulletKey key)
    { 
        return m_BulletPoor[key];
    }
}

    这是一个简单的模板,在MemoryPoor里面创建三个子资源池,数据结构就用Dictionary,键用枚举管理起来分好模块,然后外面使用的时候直接GetMemory就可以了。

    强调一下,这只是一个模板,还是有很多工作要做的:

1.加载资源的方式和时间:

    加载资源我这里只在Start()里面简单的Add了一条,在项目中要考虑什么时候加载什么资源,比如启动的时候加载一些必须的资源,在切入一些不常用的场景前再加载另外的资源等等

2.获取资源的方式:

   模板中只简单的取键值对返回,实际中可能需要更丰富的方法,比如克隆号之后初始化位置大小等等

3.资源回收

   资源回收根据不同的项目有很多种方式,要结合实际情况,注意Load进池子的资源和Clon出来的资源不能一起清掉,正常情况清掉Clone的就可以了。离开不常用场景,如果需要释放池子里的资源也要注意处理方式。

    可以多加一些资源池,每个场景一个,场景切换的时候,unity会自动回收掉,也不是不行。

    如果是一些量级小的项目,比如一个棋牌项目,在启动阶段全部Load,退出游戏在清也没多大问题,毕竟量级小,保存这些资源也不影响性能。

4.拓展

   模板中只有Load的资源,很多资源都可以放在资源池,比如下载的资源音乐、文件、文本等等

最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹