using System; using System.Collections; using UnityEngine; public class CoinPool : MonoBehaviour { private ObjectPool pool;// { get; private set; } //ВЫНЕСТИ В ОТДЕЛЬНЫЙ КЛАСС, ЗДЕСЬ ХРАНИТЬ СПИСКИ public void CreateCoinPool(Coin coinPrefab) // ВЫНЕСТИ В КЛАССЫ { Func createCoin = () => { Coin coin = Instantiate(coinPrefab); coin.gameObject.SetActive(false); coin.transform.SetParent(gameObject.transform, false); return coin; }; Action getCoin = (Coin coin) => { //Debug.LogError("COIN_POS_GET: " + coin.transform.position); coin.gameObject.SetActive(true); }; Action releaseCoin = (Coin coin) => { //Debug.LogError("COIN_POS_RELEASE: " + coin.transform.position); coin.gameObject.SetActive(false); coin.transform.position = Vector3.zero; coin.transform.localPosition = Vector3.zero; coin.transform.rotation = Quaternion.identity; coin.transform.SetParent(null); }; pool = new ObjectPool(createCoin, getCoin, releaseCoin, 100); } public Coin GetFromPool() { return pool.Get(); } public void ReturnToPool(Coin coin) { pool.ReturnToPool(coin); } }