규모가 작은게임보다는 큰 게임에 쓰면 좋다
성능 향상 시키기 위한 방법
어딘가에 저장되어 있는 리소스를 메모리에 불러와서 다시 인스턴스화해서 불러오는 과정이 느리다
-> 계속사용하고 있는데 안보이게 한다(destroy하는게 아니라 안보이게 했다가 필요하면 보이게)
컴포넌트를 넣어서 풀링할 오브젝트인지 구분해준다.
리소스 매니저를 보조하는 역할
public class ResourceManager
{
public T Load<T>(string path) where T : Object
{
return Resources.Load<T>(path);
}
public GameObject Instantiate(string path, Transform parent = null)
{
// 1. original 이미 들고 있으면 바로 사용
GameObject prefab = Load<GameObject>($"Prefabs/{path}");
if(prefab == null)
{
Debug.Log($"Faild to load prefab : {path}");
return null;
}
// 2. 혹시 풀링된 애가 있을까?
GameObject go = Object.Instantiate(prefab, parent);//Object.을 붙여준 이유는 여기 Instantiate말고 Object의 Instantiate 불러오라고
go.name = prefab.name;
return go;
}
public void Destroy(GameObject go)
{
if (go == null)
return;
// 만약 풀링이 필요한 아이라면 -> 풀링 매니저한테 위탁
Object.Destroy(go);
}
}