강의, 책/[Unity] C#과 유니티로 만드는 MMORPG 게임 개발 시리즈

Section 3. Prefab - Resource Manager

hye3193 2024. 1. 20. 00:54

Resources 라는 폴더 내에 위치한 리소스들을 코드 상에서 불러와서 사용할 수 있다

따라서 아트, 사운드 등의 리소스들은 모두 Asset > Resources 폴더 내에 위치시켜두면 된다

prefab = Resources.Load<GameObject>("Prefabs/Tank");

위와 같이 Resources > Prefabs > Tank 경로에 위치한 게임 오브젝트를 가져올 수 있다

 

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)
    {
        GameObject original = Load<GameObject>($"Prefabs/{path}");
        if (original == null)
        {
            Debug.Log($"Failed to load prefab : {path}");
            return null;
        }
        GameObject go = Object.Instantiate(original, parent);
        go.name = original.name;
        
        return go;
    }
    
    public void Destory(GameObject go)
    {
    if (go == null)
        return;
    
    Object.Destory(go);
}

ResourceManager 스크립트 파일은 위와 같다

Resource와 관련된 작업들을 한 매니저에서 관리함으로써 문제가 발생할 경우 파악이 쉬워진다는 장점이 있다

 

ResourceManager _resource = new ResourceManager();
public static ResourceManager Resource { get { return Instance._resource; } }

그리고 Manager 스크립트에 위와 같이 연결해준다