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를 통해 생성 가능
'유니티' 카테고리의 다른 글
Layer Mask 와 Layer Tag (0) | 2022.08.16 |
---|---|
Raycast에 대해 알아보자. + Input.mousePosition (0) | 2022.08.12 |
Collision, Trigger, RigidBody 에 대하여 공부해보자. (0) | 2022.08.12 |
Input Manager 클래스를 만들어보자. (0) | 2022.08.10 |
transform.Rotate()와 transform.eulerAngles의 차이점, Quaternion.Slerp(), player 이동 (0) | 2022.08.10 |