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.
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
using XWFramework.Tools;
|
|
|
|
|
namespace XWFramework.ObjectTool
|
|
|
|
|
{
|
|
|
|
|
public class ObjectPool : MonoSingleton<ObjectPool>
|
|
|
|
|
{
|
|
|
|
|
[Header("Ԥ<><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>")]
|
|
|
|
|
public string resourcesDir;
|
|
|
|
|
Dictionary<string, SubPool> pools;
|
|
|
|
|
protected override void Awake()
|
|
|
|
|
{
|
|
|
|
|
base.Awake();
|
|
|
|
|
pools = new Dictionary<string, SubPool>();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//ȡ<><C8A1>
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|