Unity-对象池

it2025-09-26  1

简介

解决某些对象频繁创建或销毁造成的时间资源消耗

实例

using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test_ObjectPools { private static Test_ObjectPools _instances; public static Test_ObjectPools GetInstances() { if (_instances==null) { _instances = new Test_ObjectPools(); } return _instances; } //构造函数 Dictionary<int, List<GameObject>> pools; public Test_ObjectPools() { pools = new Dictionary<int, List<GameObject>>(); } public void PushIntoPool(GameObject obj,Transform parent) { obj.SetActive(false); obj.transform.SetParent(parent); int key = obj.GetInstanceID(); if (!pools.ContainsKey(key)) { pools.Add(key, new List<GameObject>()); } pools[key].Add(obj); } public GameObject PushOutPool(GameObject obj,Vector3 pos, Quaternion rot) { int key = obj.GetInstanceID(); if (pools.ContainsKey(key)) { if (pools[key].Count>0) { GameObject result = pools[key][0]; result.SetActive(true); pools[key].Remove(result); result.transform.position = pos; result.transform.rotation = rot; return result; } } GameObject res = GameObject.Instantiate(obj, pos, rot) as GameObject; res.name = obj.GetInstanceID().ToString(); return res; } }

参考

https://www.jianshu.com/p/090d928e7bbb

最新回复(0)