45 lines
1.1 KiB
C#
45 lines
1.1 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class ObjectPool : MonoBehaviour
|
|
{
|
|
public static ObjectPool instance;
|
|
public static Dictionary<GameObject, List<Transform>> pool;
|
|
void Awake(){
|
|
instance= this;
|
|
}
|
|
|
|
public static GameObject Spawn(GameObject obj, Vector3 position){
|
|
if(pool.ContainsKey(obj)){
|
|
//use from pool
|
|
if(pool[obj].Count <=0){
|
|
GameObject go = Instantiate(obj, position, Quaternion.identity);
|
|
pool.Add(obj, new List<Transform>());
|
|
pool[obj].Add(go.transform);
|
|
return go;
|
|
}else{
|
|
GameObject chosen = pool[obj][0].gameObject;
|
|
pool[obj].RemoveAt(0);
|
|
return chosen;
|
|
}
|
|
}else{
|
|
GameObject go = Instantiate(obj, position, Quaternion.identity);
|
|
pool.Add(obj, new List<Transform>());
|
|
pool[obj].Add(go.transform);
|
|
return go;
|
|
|
|
}
|
|
}
|
|
|
|
public static void Despawn(GameObject obj){
|
|
// if()
|
|
}
|
|
}
|
|
|
|
public class PoolItems{
|
|
|
|
|
|
|
|
}
|