오브젝트풀링(다시보기)

·2023년 4월 28일
0

Unity

목록 보기
21/22

📌오브젝트 풀링


규모가 작은게임보다는 큰 게임에 쓰면 좋다
성능 향상 시키기 위한 방법

어딘가에 저장되어 있는 리소스를 메모리에 불러와서 다시 인스턴스화해서 불러오는 과정이 느리다
-> 계속사용하고 있는데 안보이게 한다(destroy하는게 아니라 안보이게 했다가 필요하면 보이게)

컴포넌트를 넣어서 풀링할 오브젝트인지 구분해준다.


📌풀매니저


리소스 매니저를 보조하는 역할

리소스 매니저에서 풀매니저가 필요한 부분 3가지

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);
    }
}

코드

참고자료

Part3: 유니티 엔진
섹션 10.Object Pooling(오브젝트풀링)

profile
개인공부저장용(하루의 기록)

0개의 댓글