# prefab Instance를 코드로 생성하는 방법
방식 1)
툴에서 prefab을 지정해 생성하는 방식이다
툴에서 prefab 게임오브젝트에 수동으로 prefab 에셋을
넣어주어 지정을 해서 생성을 한다
public class PrefabTest : MonoBehaviour
{
public GameObject prefab;
GameObject tank;
void Start()
{
tank = Instantiate(prefab);
Destroy(tank, 3.0f);
}
}
방식 2)
코드로 경로를 지정해 prefab을 지정해 prefab을 생성하는 방식이다
public class PrefabTest : MonoBehaviour
{
GameObject prefab
GameObject tank;
void Start()
{
prefab = Resources.Load<GameObject>("Prefabs/Tank");
tank = Instantiate(prefab);
Destroy(tank, 3.0f);
}
}
# ResourceManager 생성
리소스 경로를 통해 Load와 Instantiate 하고 Destroy 하는 기능을
우리만의 ResourceManager 클래스를 통해 래핑해 사용할 수있다
툴에서 사용하는 기능이 아니기에 MonoBehaviour 상속을 제거해서 코드를 작성하면 된다
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 Object.Instantiate(prefab, parent);
}
public void Destroy(GameObject go)
{
if (go == null)
return;
Object.Destory(go);
}
}
# 폴더정리
다운 받은 에셋 폴더를 Resources 폴더에 정리하는 방식은
성향에 따라서 아래의 두 종류로 나뉜다
객체별로 구분 vs 종류별로 구분
# model prefab
아트팀이 제공해 주는 model prefab은
일반적인 prefab처럼
변수를 base에서 관리하고 따로 override도 가능한
기능들은 제공하지 않기에 그냥 에셋이라고 생각하면 된다
대신 model prefab을
Hierarchy 창으로 드래그 드롭해 게임오브젝트로 변환시키고
해당 오브젝트에 우리가 원하는 Component들을 추가해서 작업을 할 수 있다
그리고 작업이 완료된 해당 오브젝트를
Hierarchy 창에서 Asset 창으로 드래그 드랍해서 일반적인 prefab으로 생성 및 저장이 가능하다
'게임 엔진 - 유니티 > [루키스] 유니티' 카테고리의 다른 글
[유니티 Note] 섹션 5-2 (0) | 2025.07.02 |
---|---|
[유니티 Note] 섹션 5-1 (0) | 2025.07.02 |
[유니티 Note] 섹션 4-1 (0) | 2025.06.25 |
[유니티 Note] 섹션 3-4 (0) | 2025.06.25 |
[유니티 Note] 섹션 3-3 (0) | 2025.06.25 |