오브젝트 풀링

2023. 1. 26. 18:59Unity/스크립트 기본

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

'Unity > 스크립트 기본' 카테고리의 다른 글

유니티 매니저  (0) 2024.04.05
BoxCast  (0) 2023.02.21
메모리 관리  (0) 2022.06.27
애니메이터  (0) 2022.06.16
파일 불러오기  (0) 2022.06.16