본문 바로가기
Unreal

Unreal) 블루프린트를 이용한 비주얼 스크립팅

by 준모 2024. 12. 18.

 

블루프린트


 

블루프린트(Blueprint)란 언리얼 엔진에서 제공하는 비주얼 스크립팅 시스템이다.

 

복잡한 코드 작성없이 노드 기반으로 그림을 그려서 프로그래밍을 가능하게 하는 시스템이다.

 

Unity엔진으로 프로젝트를 만들어봤을때 Behavior Tree 랑 비슷한 느낌이여서 친숙했다.

 

전체적으로 코드로만 작업해왔어서 그런가, 코드로 작업하는게 좀더 편한 느낌이 들었다.

 

 

 

창 → 레이아웃 불러오기 → UE4 클래식 레이아웃으로 변경해 줄 수 있다.

 

아래 사진처럼 해당 레벨의 블루프린트창을 열 수 있다.

 

 

 

이 창이 노드들을 이용하여 코딩없이 작업이 가능한 블루프린트 창이다.

 

 

 

 

각종 노드


 

Event BeginPlay 노드는 프로젝트가 실행됐을때 맨처음 한번 실행되는 이벤트 노드이다.

 

Event Tick 노드는 위 노드와 반대로 프로젝트가 시작된 순간부터 매프레임 실행되는 노드이다.

 

Print Text 노드는 원하는 Text를 화면에 출력해주는 노드이다.

 

아래와 같이 연결하게 된다면 프로젝트가 시작되고 "Hello World" 문장이 화면에 출력된다.

 

 

 

 

하나의 프로젝트들을 만들기 위해 필요한 각종 변수들이다.

 

처음보는 변수중에 Name이라는 변수가 있는데 이는 String보다 비교하는 런타임이 빠른 변수라고 한다.

 

문자열을 비교할 필요가 있을때 Name변수를 사용하면 된다.

 

 

  • 부울(Boolean) : 참/거짓 두 가지 상태만 가짐
  • 바이트(Byte) : 정수. 가장 크기가 작음(0~255)
  • 인티저(Integer) : 정수. 일반적인 정수(-21억~21억)
  • 인티저64(Integer64) : 정수. 가장 크기가 큼
  • 플로트(Float) : 실수. 정밀도가 더 우월함(double-precision)
  • 이름(Name) : 문자열. 엔진 내부에서 사용, 불변인 경우
  • 스트링(String) : 문자열. 일반적인 문자열 (ex. 플레이어명)
  • 텍스트(Text) : 문자열. 퀘스트 설명같이 다국어 변환이 필요한 경우

 

 

 

 

모든 변수들은 Get, Set 노드를 사용할 수 있다.

 

CTRL + 변수 드래그 앤 드랍으로는 Get노드

 

Alt + 변수 드래그 앤 드랍으로는 Set노드를 가져올 수 있다.

 

 

 

 

 

블루프린트에서 비교 연산자는 두 값을 비교하여 참 또는 거짓을 반환하는데 사용된다.

 

노드 생성 방법은 사칙 연산과 동일하게 레벨 블루프린트 화면에서 우클릭 후 각각의 기호를 검색하면 된다.

 

 

 

 

 

블루프린트에서 논리 연산은 여러 조건을 조합하거나 반전하여 복잡한 논리적 흐름을 처리할 때 사용된다.

 

블루프린트에서 제공하는 주요 논리 연산자는 아래와 같으며

 

다른 연산과 동일하게 레벨 블루프린트 화면에서 우클릭후 검색하면 된다.

 

 

 

 

Branch

 

브랜치는 다른 언어의 if else 문이다.

 

 

 

Sequence

 

Sequence는 실행 흐름을 여러 개의 출력으로 분리하고, 순차적으로 각 출력 핀을 실행하는 노드이다.

 

Then 0 번째 라인의 노드가 전부 실행된 뒤 Then 1... 2....3.... 이렇게 실행된다.

 

핀 추가를 하여 Then (n) 출력 가능하다.

'

 

 

Flip Flop

 

Flip Flop은 실행 흐름을 번갈아가며 두 개의 출력 핀으로 구분하여 실행하는 노드이다.

 

하나의 실행 핀으로 입력을 받고, 두 개의 실행 핀이 번갈아 실행된다.

 

 

 

While

 

다른 언어처럼 조건에 만족하면 반복하는 노드이다.

 

Loop Body : 조건을 만족할 경우 반복하여 실행되는 코드 

 

중괄호 안에 들어가는 부분이라고 생각하면 된다.

 

Completed : 조건을 만족하지 않을 때 빠져나오는 코드

 

While문의 조건이 맞지 않을 경우 중괄호를 빠져나올때 다음에 올 부분을 연결시켜주면 된다.

 

 

 

For

 

First Index : 인덱스 시작값

 

Last Index : 인덱스 종료값

 

Loop Body, Completed : While과 동일

 

Index : 현재 인덱스 값

 

C++ 에서는 두번째 조건식에 조건을 걸어줄 수 있지만

 

블루프린트 For Loop에서는 Last Index 까지 반복하고 풀린다. 
(Last Index가 5일경우 Index가 5일경우에도 반복문 실행 후 종료)

 

 

 

 

마치며


 

1일차와 2일차에는 언리얼 엔진 설치와, 언리얼 엔진의 각종 패널들, 기능들을 사용해보며 

 

언리얼엔진에 친숙함을 기르는 단계였다면, 3일차인 오늘은 블루프린트를 처음 접해보는 과정이였다.

 

마지막에 가위바위보 게임을 만드는 과제가 있었는데, 아직 블루프린트에 익숙하지 않아서인지 

 

C++ 코드로 프로그래밍했다면 좀더 빠르게 결과를 만들 수 있었다는 생각이 들었다.