using UnityEngine; using System.Collections.Generic; public class GameObjectPool : MonoBehaviour { [Tooltip("预制体")] public GameObject prefab; [Tooltip("初始预加载数量")] public int preload = 10; private Stack _pool = new(); public Transform parent; private void Start() { for (var i = 0; i < preload; i++) { var go = Instantiate(prefab, transform); go.SetActive(false); _pool.Push(go); } } public GameObject Get() { var go = _pool.Count > 0 ? _pool.Pop() : Instantiate(prefab, parent); go.transform.parent = parent; go.SetActive(true); return go; } public void Release(GameObject go) { if (go == null) return; go.SetActive(false); go.transform.SetParent(transform, false); _pool.Push(go); } }