summaryrefslogtreecommitdiff
path: root/WorldlineKeepers/Assets/Scripts/Tools/GameObjectPool.cs
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2023-05-16 16:03:51 +0800
committerchai <215380520@qq.com>2023-05-16 16:03:51 +0800
commit2afbb545027568fccc85853e18af02a7c6b2929e (patch)
tree3827873af133fe9f81041e4babbfd0d54a53f9d1 /WorldlineKeepers/Assets/Scripts/Tools/GameObjectPool.cs
parent88f739ea0f3440152082f34707e79328a71aabed (diff)
*misc
Diffstat (limited to 'WorldlineKeepers/Assets/Scripts/Tools/GameObjectPool.cs')
-rw-r--r--WorldlineKeepers/Assets/Scripts/Tools/GameObjectPool.cs51
1 files changed, 51 insertions, 0 deletions
diff --git a/WorldlineKeepers/Assets/Scripts/Tools/GameObjectPool.cs b/WorldlineKeepers/Assets/Scripts/Tools/GameObjectPool.cs
new file mode 100644
index 0000000..1d948e6
--- /dev/null
+++ b/WorldlineKeepers/Assets/Scripts/Tools/GameObjectPool.cs
@@ -0,0 +1,51 @@
+using UnityEngine;
+using WK;
+
+namespace WK
+{
+ public class GameObjectPool : System.IDisposable, UnityObjectPool<GameObject>.IPooledInstanceInitializer
+ {
+ UnityObjectPool<GameObject> _pool;
+ Transform _poolParent;
+
+ public GameObjectPool(GameObject sourceObject, Transform poolParent, int initialSize = 0)
+ {
+ _pool = new UnityObjectPool<GameObject>(sourceObject, poolParent, this, initialSize);
+ _poolParent = poolParent;
+ }
+
+ public GameObject Acquire(Transform parent)
+ {
+ GameObject instance = _pool.Acquire();
+ instance.transform.SetParent(parent);
+ instance.transform.ResetLocal();
+ instance.SetActive(true);
+
+ return instance;
+ }
+
+ public void Release(GameObject instance)
+ {
+ instance.SetActive(false);
+ instance.transform.SetParent(_poolParent);
+ _pool.Release(instance);
+ }
+
+ public void InitPooledInstance(GameObject instance)
+ {
+ instance.SetActive(false);
+ }
+
+ public void DestroyPooledInstance(GameObject instance)
+ {
+ UnityEngine.Object.Destroy(instance);
+ }
+
+ public void Dispose()
+ {
+ _pool.Dispose();
+ _pool = null;
+ _poolParent = null;
+ }
+ }
+} \ No newline at end of file