상세 컨텐츠

본문 제목

#5. 인스턴스(Instance)

유니티 학습/세미나 자료

by 남민우_ 2024. 7. 24. 23:14

본문

1. 인스턴스화란?

어느 객체를 실존하는 세상(인게임)으로 구체화한다.

유니티에서는 Prefab 의 모습으로 객체를 표현한다.

 

 1-1. Prefab 이란?

GlobalCube 를 프로젝트 창으로 옮겨 Prefab 을 생성한 모습

레벨에서 만든 객체를 Hierachy 창에서부터 프로젝트 창으로 드래그&드롭으로 만드는 객체

처음 만들 때 보유한 컴포넌트를 모두 유지하며, 같은 객체를 복제하며 만드는 일종의 원본 객체이다.

(언리얼을 알고 있는 사람이라면, BP클래스와 같은 개념이라고 받아들이면 된다)

 

이 Prefab 객체는 주로 플레이어의 총알, 필드의 몬스터 등 같은 속성을 가진 객체이지만 일일이 만들기는 번거롭고, 여러 개의 객체가 인게임에 필요할 때 사용한다.

레벨에 배치하지 않은 상태에서 다른 객체가 이 Prefab 객체를 생성하는 방식으로도 사용 가능하다.

단, 이러한 방식은 이 Prefab 객체를 생성하는 코드를 가진 객체는 이미 인게임에 존재해야 한다는 주의해야 할 점이 있다.

=> 인게임에 존재하지 않는 코드를 동작시킬 수 없는 기초적인 원리이다.

 

 1-2. 생성 방법 - Instantiate()

코드

public GameObject target;
    
    void Start()
    {
        Instantiate(target);
    }

 

Instantiate() :

인자로 들어온 객체를 생성하는 함수 (일반적으로 Prefab 객체를 인자로 사용한다)

생성하려는 객체의 위치와 회전값을 설정할 수도 있다.

Instantiate(target, position, rotation);
//position 과 rotation 은 변수의 값으로 들어간다

 

게임 실행 후 생성되는 Prefab 객체는 (Clone) 표시를 가지고 있다

Spawner 에 포함된 Spawner 스크립트를 통해, Prefab으로 만든 GlobalCube가 클론의 형태로 월드에 나타난다.

 

이러한 과정을 모두 포함하여 '인스턴스화' 라고 부른다

 

+ Instantiate() 의 활용

GameObject spawnCube = Instantiate(target);

spawnCube.transform.position = new Vector3(10, 10, 10);

 

GameObject 속성의 spawnCube에 생성하려는 객체 target을 할당하고, 할당된 spawnCube의 위치값을 바꿔주는 코드이다.

 

이처럼 객체를 단순히 인스턴스화 하는 것만 아니라 객체를 할당 후 상태를 변화시켜 다양한 용도에 맞게 활용할 수 있다.

'유니티 학습 > 세미나 자료' 카테고리의 다른 글

#7. 정적 변수/함수(Static)  (0) 2024.07.29
#6. 오버로드(Overload)  (0) 2024.07.28
#4. 벡터 연산  (5) 2024.07.24
#3. 클래스와 오브젝트  (0) 2024.07.18
#2. 변수와 함수  (0) 2024.07.18

관련글 더보기