Unity 게임 만들기 프로젝트 - Resource Manager
반응형
1. Prefabs
미리 구성된 게임 객체, 오브젝트를 생성할 때 사용되는 클래스 같은 원본을 의미. 얼마든지 복사해서 오브젝트를 생성할 수 있음
자주 사용되는 객체들을 미리 만들어 놓고, 필요할 때마다 재사용할 수 있도록 하는 방식
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PrefabTest : MonoBehaviour
{
public GameObject prefab;
GameObject tank;
void Start()
{
tank = Instantiate(prefab);
Destroy(tank, 3.0f);
}
}
위와 같은 Script를 구성하고 GameObject에 연결해주면 public 으로 설정된 Prefab 에 미리 생성해둔 Prefabs 를 연결할 수 있다.
위에선 Tank prefabs 를 연결하고 코드를 실행하면 Tank 가 생성된 후 3초 후에 해당 GameObject 가 제거된다.
규모가 크다면 일일히 연결할 수 없기 때문에 Resource Manager 가 필요함
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
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);
}
}
ResourceManager 작성, Object 의 Instantiate 와 Destroy 메서드를 레핑하여 매니저에서 실행 될 수 있도록 구성함.
Resource > Prefabs 디렉토리 내부에서 Load 가 수행
ResourceManager _resource = new ResourceManager();
public static ResourceManager Resource { get { return Instance._resource; } }
기존 Manager 생성과 마찬가지로 Managers 파일 내부에 _resource 생성 및 호출메서드를 작성해준다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PrefabTest : MonoBehaviour
{
public GameObject prefab;
GameObject tank;
void Start()
{
tank = Managers.Resource.Instantiate("Tank");
// Managers.Resource.Destory(tank);
Destroy(tank, 3.0f);
}
}
맨위에 작성했던 코드에서 ResourceManager 를 적용하여 수정한 코드이다.
Managers.Resource.Instantiate 를 이용하여 Resource/Prefabs 폴더 내부의 Tank 를 Load 하고, Destory 하는 코드이다.
반응형
'⇥ 2D Game > Unity' 카테고리의 다른 글
Unity 게임 만들기 프로젝트 - RayCasting (1) | 2024.06.07 |
---|---|
Unity 게임 만들기 프로젝트 - 충돌 (Collision) (1) | 2024.06.06 |
Unity 게임 만들기 프로젝트 - InputManager 구현 (2) | 2024.06.05 |
Unity 게임 만들기 프로젝트 - 이동 구현 (Rotate) (0) | 2024.06.05 |
Unity 게임 만들기 프로젝트 - 이동 구현 (transform) (0) | 2024.06.05 |
댓글
이 글 공유하기
다른 글
-
Unity 게임 만들기 프로젝트 - RayCasting
Unity 게임 만들기 프로젝트 - RayCasting
2024.06.07 -
Unity 게임 만들기 프로젝트 - 충돌 (Collision)
Unity 게임 만들기 프로젝트 - 충돌 (Collision)
2024.06.06 -
Unity 게임 만들기 프로젝트 - InputManager 구현
Unity 게임 만들기 프로젝트 - InputManager 구현
2024.06.05 -
Unity 게임 만들기 프로젝트 - 이동 구현 (Rotate)
Unity 게임 만들기 프로젝트 - 이동 구현 (Rotate)
2024.06.05