오브젝트 풀링
2023. 1. 26. 18:59ㆍUnity/스크립트 기본
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PoolManager : MonoBehaviour
{
// 프리펩 보관
public GameObject[] prefabs;
// 풀 담당하는 리스트
List<GameObject>[] pools; // List<자료형> 변수이름 = new List<자료형>() 형태로 선언
void Awake()
{
pools = new List<GameObject>[prefabs.Length];
for(int index = 0; index < pools.Length; index++){
pools[index] = new List<GameObject>();
}
}
public GameObject Get(int index) // void 대신 GameObject를 반환
{
GameObject select = null;
foreach(GameObject item in pools[index])
{
if(item.activeSelf == false)
{
select = item;
select.SetActive(true);
break;
}
}
if(select == null)
{
select = Instantiate(prefabs[index], transform);
pools[index].Add(select);
}
return select;
}
}
poolManager 의 prefabs 변수 할당해 주고
poolManager.Get(0); 형식으로 다른 파일에서 접근
728x90