profile image

L o a d i n g . . .

반응형

클래스 블루프린트

레벨 블루프린트에서 다음과 같이 구성했던 기능을 클래스 블루프린트에서 재구성해 보자. 사실 이는 레벨 블루프린트만 있어도 충분하지만, 똑같은 작업의 반복처럼 보일 수도 있다. 클래스 블루프린트의 모듈성이 얼마나 유용한지를 확인해 보자.

 

노드 생성

Light_BP를 열고, 뷰포트가 아닌 이벤트그래프 탭으로 이동한다. 레벨 블루프린트에서는 그래프 상에 우클릭을 할 경우, 레벨 상에서 선택된 액터와 관련된 작업을 우선적으로 불러올 수 있었다. 클래스 블루프린트도 이와 비슷한 기능은 있지만, 개별적인 컴포넌트에만 작용한다. 레벨 상에 어떻게 배치되어 있든, 현재 컴포넌트 탭에 선택되어 있는 개별 컴포넌트만 인식하는 것이다.

예를 들어 좌측 컴포넌트 창에서 Box(Box Collision)를 선택한 상태로 그래프 상에 우클릭을 해 보면, Box와 관련된 명령들이 상단에 출력되는 것을 확인할 수 있다.

 

우선 SpotLight의 레퍼런스를 받아와야 한다. SpotLight 컴포넌트를 선택하여 그래프 상으로 좌클릭 드래그한다. 그러면 GET 유형이 노드가 그래프 상에 생성된다.

 

블루프린트 탭의 아래쪽을 보면 컴포넌트의 목록이 있다. 이 목록의 컴포넌트로도 똑같은 작업을 해 줄 수 있다. 드래그해서 그래프에 놔 보면 두 가지의 선택지를 제공하는데, SpotLight의 레퍼런스를 GET하거나 SET할 수 있다.

SET 유형의 노드해당 레퍼런스를 다른 컴포넌트로 바꿔 버릴 수 있다. 만약 다른 SpotLight 변수가 있다면 SET 노드에 연결한 다음에 새 SpotLight = 다른 SpotLight 이런 식으로 설정하는 구성이 가능하다.

 

또한 각 유형별로 노드 생성 시 단축키를 사용할 수 있다. 컴포넌트 창에서 그냥 좌클릭 드래그를 하면 곧바로 GET 유형의 노드가 된다. 키보드 Alt키를 누른 채 좌클릭 드래그를 하면 곧바로 SET 유형의 노드가 된다. 하단의 내 블루프린트 탭에서는 Ctrl를 누른 상태로 드래그하면 GET 노드, Alt를 누른 상태로 드래그하면 SET 노드가 만들어진다.

GET: 드래그 / Ctrl+드래그
SET: Alt+드래그

 

액션 추가

Spot Light 노드에서 드래그를 하여 Toggle Visibility를 찾는다.

 

본격적인 작업에 들어가기 전, 컴포넌트의 이름을 보다 직관적으로 변경하겠다.

Box -> Trigger
TextRender -> HelpfulText


Trigger를 선택
하고, 그래프 상에서 우클릭을 하면 Trigger와 관련된 이벤트를 선택할 수 있다.

이벤트 추가 > Collision > On Component Begin Overlap 추가

여기서는 액터(블루프린트 전체)가 아니라 컴포넌트(액터의 일부)를 Overlap한다는 것이다. 

 

On Component Begin Overlap의 실행 핀에서 드래그하여 Toggle Visibility 노드의 실행 핀에 연결해 준다. 다양한 옵션과 기능을 확인할 수 있으나 여기서는 다루지 않을 것이다.

이렇게 하면 Trigger Box를 통해 Light를 토글하는 기능이 완성된다.

 

다시 Trigger 컴포넌트를 선택한 다음, 그래프 상에서 우클릭을 한다.

이벤트 추가 > Collision > On Component End Overlap 추가

방금 전처럼 실행 핀에서 드래그해서 Toggle Visibility와 연결한다. 좌측 컴포넌트 창에서 SpotLight를 선택하고, 우측 디테일 창에서 Rendering - Visible를 체크 해제한다. 컴파일 후 저장한다.

 

레벨에서 실행해 보면 제대로 동작하고 있는 것을 확인할 수 있다.

 

클래스 블루프린트의 의의

이제 해당 라이트를 가지고 클래스 블루프린트의 진가를 확인해 보자. 키보드 Alt키를 누르고 드래그로 이동을 하면 해당 액터가 그대로 복사된다. 이를 적당한 자리에 위치시킨다. 회전 툴은 E를 누르면 된다.

 

더 이상 작업해 줄 필요가 없다. 플레이해 보자.

 

만약 레벨 블루프린트로 작업했다면, Trigger와 Point Light를 모두 복사한 후 블루프린트에서 각각 스크립트를 다시 만들어 줘야 했을 것이다. 이 블루프린트 자체를 아예 새 레벨에 배치하여도 동일하게 동작할 것이다. 이로써 작업량이 상당히 줄어든 것을 확인할 수 있다.

반응형
복사했습니다!