//구글콘솔 광고 추가가

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 prefab = Load<GameObject>($"Prefabs/{path}");
        if(prefab == null)
        {
            Debug.Log($"Failed to load Prefab : {path}");
            return null;
        }

        return Object.Instantiate(prefab, parent); 

    }

    public void Destroy(GameObject go)
    {
        if(go == null)
            return;

        Object.Destroy(go);
    }
}


return Object.Instantiate(prefab, parent); 

< Object를 붙여준 이유 >

안붙이면 ResourceManager클래스에있는 Instatiate()를 재귀적으로 호출하려 할테니 Object에 있는 instantiate()를 하세요라고 명시를 해준 것.


public class GameManagers : MonoBehaviour
{

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

}


게임매니저 클래스에서 ResourceManager 를 만들어 주고


public class PrefabTest : MonoBehaviour
{

    GameObject prefab;

    GameObject item;

 

    private void Start() 

    {

         item = GameManager.Resource.Instantiate("Item");      // 유니티에서 프리팹으로 만들어 둔 Item 생성

         GameManager.Resource.Destroy(item);                         // 제거

    }

}


프리팹사용을 원하는 클래스에서 GameManager를 통해 생성 가능


 

728x90
반응형

+ Recent posts