对象池:用于内存开销;
原理:将可能用到的对象(预制体),先放到一个池子里(容器),要用的时候直接从池子里拿,不用的时候就放回,而不是在需要用的时候实例创建,不用的时候销毁。
销毁和实例,都是比较消耗性能
好处:防止对象得频繁的创建和销毁,从而内存抖动、频繁的GC;
缺点:消耗的内存比较多
对象池类
using System;
using System.Collections.Generic;
using UnityEngine;
public class ObjectPool
{
//单例模式
private static ObjectPool _instance = null;
private ObjectPool()
{
}
public static ObjectPool Instance
{
get
{
if(_instance == null)
{
_instance = new ObjectPool();
}
return _instance;
}
}
//对象池的字典,用来对应物体的名字和对应容器
private Dictionary<string, Queue<GameObject>> poolDict = new Dictionary<string, Queue<GameObject>>();
//放入池子
public void PushItem(GameObject game