当对象使用结束后不直接删除,而是归还给池子,如果池子里对象总数大于预存数量的话就删掉多余的(灵活处理),保证池子在空闲状态里面只有预存的对象。 2.优化逻辑 对于对象池的优化逻辑其实是见仁见智的,并不是随随便便就拿来用,其实很多时候我们并不需要通过对象池来处理,通过对象池的主要目的是: 防止对象被频繁的创...
因此,为了提升游戏的体验效果,一般会使用对象池来预先存储需要大量实例化的对象和资源,当真正需要使用对象和资源的时候,不是调用IO组件去实例化资源,而是从对象池中将预先实例化好的对象取出来使用,用完之后,当需要将对象销毁的时候,并不是调用Destroy()方法将对象直接销毁,而是将对象的状态设置Seactive...
ExpPool._perPrefabPoolOptions.Add(prefabPool);//添加到池中 ExpPool.CreatePrefabPool(ExpPool._perPrefabPoolOptions[ExpPool.Count]); } else { Debug.Log("Already in prefabPool!"); } 3,添加完成了,那么接下来该去对象池中取对象了。 Transform labExp = ExpPool.Spawn("LabExp"); 此处LabExp是加...
ExpPool._perPrefabPoolOptions.Add(prefabPool);//添加到池中 ExpPool.CreatePrefabPool(ExpPool._perPrefabPoolOptions[ExpPool.Count]); } else { Debug.Log("Already in prefabPool!"); } 3,添加完成了,那么接下来该去对象池中取对象了。 Transform labExp = ExpPool.Spawn("LabExp"); 此处LabExp是加...
简单介绍一下对象池 对象池是什么:对象池是常用的设计模式之一。它可以减少从头创建每个对象的系统开销。 其核心是:在使用对象前先进行预热,使用的时候从池内拿出来,使用结束后反回池里,而不是销毁。在Unity中的具体实现中,它把Destroy"改"为DeActive了。
因为是新手,所以我对Unity绝大多数机制的原理都还不知道,遗憾的是网上很难找到视频或者文章能让新手快速上手官方对象池的方法,而且每个项目的使用场景又不同,完全按照别人的做法来做,缺乏灵活性,只有搞懂了为什么,才能灵活应用到自己的项目中。我在这里留个小笔记,希望能帮助到任何需要快速上手官方对象池的同学。
二、对象池的使用实例 1、打方块游戏的运行效果介绍 打方块游戏的对象池使用,通过创建一个对象池来储存子弹,减少CPU对子弹预设体的增删。 下面贴出游戏的运行界面: 子弹预设体的数量显示: 子弹的预设体的数量如图所示,根据子弹产生的速度,只要子弹的对象池中有子弹游戏对象存在,已经创建的子弹都可以循环使用,当对象...
Unity 对象池ObjectPoolController 单例Singleton 一、基本概念 1 对象池:对象池意义是将游戏中反复创建销毁的对象进行多次利用,从而避免大量对象的销毁与创建而造成CPU的负担 2 单例模式:是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一...
Unity 对象池使用 在一些场合中,我们需要频繁的创建和销毁对象,如怪物的生成以及死亡,子弹等,这时候使用对象池可以减少系统GC 对象池构建设计: publicclassGameObjectFromPool{...}publicclassGameObjectPoolMgr{...} 主要有两个类: 第一个是对象池对象,其成员为 public...