对象池的用法
对象池🐘🐘🐘
提示:以下是本篇文章正文内容
- 什么时候使用对象池?
- 具有重复、频繁出现然后消失的物体、
以下有残影效果制作的code代码部分
- 对象池设计模式概念(已残影生成为例)
💡理解:对象池(Object Pool)但从字面理解就是一池子的物体,在我们需要使用的时候就拿出来一个,然后包装成我想用的样子。用完之后清空放回到池子里。
- 为什么要有对象池呢?
- 对象池用于减少内存开销,其原理就是把可能用到到的对象,先存在一个地方(池),要用的时候就调出来,不用就放回去。
- 如果我们频繁使用 Instantiate 和 Destroy 来生成后销毁,那么会占用大量的系统内存,甚至导致系统崩溃。
- 我们可以利用对象池的设计模式概念,在游戏的一开始就制作若干个数量的物体,将他们设置 SetActive(false) 当我们需要它们的时候,只要把它们设置成 SetActive(true) 就好了,用完了再次设置为false。以此方法来循环使用,以达到优化系统的作用。
- 如果不使用对象池,我们不经浪费了很多时间在寻找合适的内存上,更让内存产生了很多的内存碎片。
以冲锋残影的案例来说的话,我们只需要制作每一个残影的 Prefab 让它可以获得玩家的坐标位置和 Sprite 图像资源,然后随着时间推移降低不透明度,到达指定时间就返回对象池当中就可以了:
- 代码部分享,很有用哦!~所以赶紧收藏起来吧🔗🔗🔗~
Player
using UnityEngine;
public class Player : MonoBehaviour
{
private Animator animator;
private Rigidbody2D r