using System.Collections.Generic; using UnityEngine; using XWFramework.Tools; namespace XWFramework.ObjectTool { public class ObjectPool : MonoSingleton { [Header("预制体存放路径")] public string resourcesDir; Dictionary pools; protected override void Awake() { base.Awake(); pools = new Dictionary(); } //取出 public GameObject Spawn(string name) { if (!pools.ContainsKey(name)) { CreateSubPool(name); } return pools[name].Spawn(); } public void UnSpawn(GameObject obj) { foreach (SubPool subPool in pools.Values) { if (subPool.Contains(obj)) { subPool.UnSpawn(obj); break; } } } void CreateSubPool(string name) { GameObject prefab = Resources.Load(resourcesDir + name); SubPool subPool = new SubPool(prefab, transform); pools.Add(name, subPool); } } }