You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
1.2 KiB

using System.Collections.Generic;
using UnityEngine;
using XWFramework.Tools;
namespace XWFramework.ObjectTool
{
public class ObjectPool : MonoSingleton<ObjectPool>
{
[Header("Ô¤ÖÆÌå´æ·Å·¾¶")]
public string resourcesDir;
Dictionary<string, SubPool> pools;
protected override void Awake()
{
base.Awake();
pools = new Dictionary<string, SubPool>();
}
//È¡³ö
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<GameObject>(resourcesDir + name);
SubPool subPool = new SubPool(prefab, transform);
pools.Add(name, subPool);
}
}
}