游戏开发过程中遇到需要频繁创建和销毁的对象为了方便创建通常会使用预制体的方式进行生成,而为了避免对垃圾回收造成压力通常会使用对象池来对这些预制体进行管理。但是加载,实例化预制体需要额外的代码控制。这里提供了一种简单的管理方案。
首先创建一个基类,这个类用于自动获取预制体并将其放入对象池进行管理
基类代码:
using UnityEngine;
using System;
using System.Collections.Generic;
public abstract class PrefabBehavior<T> : MonoBehaviour where T : MonoBehaviour
{
private static Queue<T> objectPool = new Queue<T>(); //对象池
private static T template; //预制体
/// <summary>
/// 获取对象
/// </summary>
/// <returns></returns>
public static T Get()
{
//读取Resources/Prefabs路径下所有带有继承PrefabBehavior脚本的物体,必须有且只能有一个,否则报错
if (template == null)
{
T[] all = Resources.LoadAll<T>("Prefabs");
if (all.Length == 0) { throw new Exception(string.Format("{0} has no prefab in path: Resources/Pref