profile image

L o a d i n g . . .

반응형

https://youtu.be/D4wJ_YO8ZWM

 

이제 방 바깥에 라이트를 배치하고 플레이어가 접근하면 켜지도록 하는 작업을 진행할 것이다. 이전 레벨 블루프린트로 작업했을 때와 같은 과정을 클래스 블루프린트로 작업해 볼 것이다. 당연히 그전에 클래스 블루프린트에 대한 이해가 필요하다.

 

클래스 블루프린트의 의의

수많은 건물들이 늘어서 있는 길거리가 배경이라고 생각해 보자. 모든 건물에 있는 각각의 방에 들어가면 라이트가 켜지고, 그곳에서 나오면 꺼지는 기능을 부여해야 한다. 이전까지 우리는 레벨 블루프린트에서 작업했기 때문에 각 건물의 모든 방에 라이트와 볼륨을 배치해야 하고, 같은 구성으로 모든 방을 일일이 만들어 주어야 한다. 거기에 레벨 블루프린트 내의 스크립트도 일일이 복사해서 붙여 넣어야 한다.

게다가 다른 레벨에서 사용하려면, 해당 레벨에 이 모든 정보를 다시 복사해야 한다. 이러한 반복 작업을 피하기 위해 클래스 블루프린트가 존재한다.

 

클래스 블루프린트의 시작

레벨 블루프린트 창을 연다. 실행 핀에 마우스 우클릭을 하면 메뉴가 나오는데, 이때 'Delay에 대한 링크를 끊습니다.'를 선택한다. 여기서 Delay는 옆에 배치한 Delay() 함수 노드를 일컫는 것으로, 해당 핀 액션을 클릭하면 두 노드 간의 연결이 끊어진다. 

OnActorEndOverlap 노드에도 같은 작업을 해 준다.

 

컴파일 후 실행해 보면 앞서 작업했던 스크립트가 더 이상 작동하지 않는 것을 확인할 수 있다. 두 노드의 연결이 완전히 끊겼기 때문에 라이트를 켤 방법이 없는 것이다.

 

이제 레벨 블루프린트 창을 닫는다.

 

클래스 블루프린트의 추가

UE4에서 클래스 블루프린트는 다양한 방법으로 만들 수 있다. 가장 보편적인 방법을 사용해 보자. 먼저 클래스 블루프린트를 저장할 폴더를 생성한다.

콘텐츠 브라우저 탭 > 좌측 탐색기 최상위 폴더인 '콘텐츠' 우클릭 > 새 폴더 클릭 > Blueprints 폴더 추가

 

콘텐츠 브라우저 상에서 우클릭을 하면, 생성할 수 있는 다양한 애셋들이 선택지로 제공된다. 기본 애셋 생성 카테고리를 보면 블루프린트 클래스라는 선택지가 존재한다. 이것을 클릭한다.

 

아래와 같은 부모 클래스 선택이라는 대화창을 확인할 수 있다.

블루프린트 클래스는 해당 블루프린트의 부모 클래스를 정의해야 한다. 대화창의 선택지 중에서 고를 수 있으며, 선택한 부모 클래스로부터 기능들을 상속받을 수 있다. 예를 들어 Character를 선택한다면, Character의 모든 구성 속성(이동 속도, 점프 가능 여부 등)들을 클래스를 만들 때 모두 상속받아 활용할 수 있다. 

이번 작업에서는 Actor를 선택한다. 우측에 설명이 적혀 있듯이 액터는 월드에 배치 또는 스폰할 수 있는 오브젝트이다. 레벨 내에 무언가를 스폰시킬 때나, 레벨 내 인스턴스에 토글 기능을 구성할 때 활용한다. 

 

Light_BP라는 이름으로 수정한다. (BP: Blueprint)

 

우리는 앞서 콘텐츠 브라우저 상에서 우클릭 후, 기본 애셋 생성을 통해 블루프린트 클래스를 생성하였다. 우클릭 시 출력되는 메뉴 하단에 보면 '고급 애셋 생성' 카테고리의 '블루프린트'가 존재한다. 이 항목에서 추가적인 유형의 블루프린트들을 만들 수 있다.

 

또는 좌측의 '신규 추가' 버튼을 눌러도 동일한 메뉴를 볼 수 있다.

 

레벨 에디터의 디테일 창을 활용해서 생성할 수도 있다. 레벨상에 배치한 라이트를 선택한 다음, 디테일 탭의 '블루프린트/스크립트 추가'를 클릭하면, 해당 액터를 블루프린트에 추가해 작업할 수 있도록 만들어 준다.

 

마지막으로 상단 툴바의 블루프린트 옵션을 열고, '새 블루프린트 클래스...'를 눌러도 된다. 또한 '선택된 컴포넌트를 블루프린트 클래스로 변환...', '선택된 액터를 블루프린트 클래스로 변환...' 선택지를 이용하여 액터나 컴포넌트 등을 블루프린트로 변환할 수도 있다. 

 

여기까지 블루프린트 클래스를 생성하는 다양한 방법에 대해 살펴보았다.

이제 전체 레벨 구성을 블루프린트에 넣어 볼 것이다. 또한, 방 밖에도 새로운 라이트의 블루프린트를 구성해 보겠다. 그리고 레벨에 구성한 모든 애셋을 블루프린트로 전환하여, 해당 블루프린트 클래스의 다양한 인스턴스를 레벨에 배치할 수 있게 한다. 그러면 블루프린트 클래스 전체에 모듈성이 부여되어 블루프린트의 인스턴스를 레벨에 바로 배치해도 곧장 활용할 수 있을 것이다.

 

클래스 블루프린트 에디터

생성했던 Light_BP를 더블클릭하여 열면, 지금까지 사용한 블루프린트 에디터와 좀 다른 창 하나가 뜬다. 이전에 보던 것은 레벨 블루프린트, 지금 보고 있는 창은 클래스 블루프린트로서, 두 가지 모두 블루프린트 에디터가 맞다.

 

클래스 블루프린트의 뷰포트 탭에서는 해당 블루프린트를 구성하는 모든 컴포넌트들을 볼 수 있다. 여기서 컴포넌트는 좌측 상단에 있는 컴포넌트 탭을 의미한다. 

 

컴포넌트 탭에는 블루프린트에 추가하여 블루프린트를 정의하는 요소들이 나온다. 우리가 배치한 방의 벽들과 트리거 박스, 라이트까지 전부 컴포넌트다. 컴포넌트 탭에서는 이 모든 컴포넌트를 한 개의 액터 모듈로 합쳐서 레벨 내에 한 개의 개체로 배치할 수 있다.

 

Construction Script 탭에서는 변수 등 에디터 내에서 정의하고 싶은 요소들을 구성할 수 있다. 이 블루프린트에서 무엇을 수정하든 간에 Construction Script와 연결된 노드는 무엇이든 전부 실행된다. 이는 게임 플레이가 아니라 게임을 실제로 플레이하기 전, 레벨 에디터에서 레벨을 구성할 때 발동하는 것이다. 

 

이벤트그래프 탭에서는 레벨 블루프린트와 매우 비슷해 보이며, 기본 노드들이 배치되어 있다. 대부분의 비주얼 스크립팅 작업은 이 탭에서 이루어진다.

반응형
복사했습니다!