본문 바로가기
게임 엔진 - 유니티/[루키스] 유니티

[유니티 Note] 섹션 4-2

by 묻공러 2025. 6. 25.

# 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