众所周知,游戏开发中内存和性能一直是影响用户游戏体验的至关重要的两个因素,这次说一说对象池的概念。
对象池意义是将游戏中反复创建销毁的对象进行多次利用,从而避免大量对象的销毁与创建而造成CPU的负担。缺点是占用了更多的内存,但凡事都没有最好的解决办法,在移动平台上针对游戏的优化基本偏向于牺牲空间换取时间,所以以下两种对象池从本质上是为了回收对象服务的,废话不多说,直接上代码。
using UnityEngine;
using System.Collections;
using System;
using System.Collections.Generic;
/// <summary>
/// 泛型非单例池,代码简洁,通用性广泛
/// </summary>
public class MyPool <T> where T : class {
private Action <T> mReset; //重置对象的委托
private Func <T> mNew; //创建新对象的委托
private Stack <T> stack; //存放对象的池子,用List等动态数组也可以,推荐泛型数组
public MyPool (Func <T> mNew, Action <T> mReset = null) {
this.mNew = mNew;
this.mReset