개발/Unreal

[Unreal] 자습서 2장 - 블루프린트

by Majangnan 2023. 3. 17.

비주얼 스크립팅

코드를 작성하는 것이 아닌 특정 기능을 담은 코드 블록을 마우스 드래그 앤 드롭으로 조립하는 시각적 인터페이스를 이용한 코딩 방식을 '비주얼 스크립팅' 이라고 한다. 언리얼 엔진은 코딩에 익숙하지 않은 기획자나 아티스트들이 간단하게 기능을 구현할 수 있도록 비주얼 스크립팅 방식의 '블루프린트' 기능을 제공하고 있다. 특히 언리얼 엔진의 블루프린트는 일반적인 블록 코딩보다도 더욱 코딩 관련 기능을 많이 제공하고 있어서 직접적인 코딩 없이 블루프린트만으로도 어느 정도 규모의 프로젝트는 거뜬히 제작할 수 있다고 한다.

 

사실 C++을 이용한 언리얼 엔진 개발을 공부하고 싶었지만 지금은 우선 블루프린트를 통해 언리얼과 친해진 후 차차 C++ 공부를 해 볼 생각이다.

 

 

블루프린트 클래스 생성

이제 블루프린트 클래스를 생성하여 블루프린트 실습을 해보겠다. 콘텐트 브라우저에서 오른쪽 버튼을 클릭하여 Blueprint Class 하나를 생성한다.

 

 

클래스는 'Actor' 클래스로 선택하고 이름은 'TestActor'로 지어주도록 한다. 생성된 블루프린트 클래스를 마우스로 드래그 앤 드롭하여 레벨에 배치해준다.

 

 

그 후 더블클릭을 하면 에디터 화면이 뜨게 되고 Event Graph 창을 열면 아래와 같은 화면이 보인다. 이벤트 그래프 탭에서는 개발자가 만들고 싶은 기능을 비주얼 스크립팅 형식으로 작성할 수 있다. 

 

 

처음에 이벤트 그래프 판에는 [Event BeginPlay], [Event ActorBeginOverlap], [Event Tick]의 세 가지 노드가 준비되어 있는데, 각각의 노드는 실행되는 주기에서 차이가 있다.

 

  • Event BeginPlay : 게임이 시작되면 모든 액터에 대해 발동되는 이벤트

 

  • Event ActorBeginOverlap : 다수의 조건이 동시에 만족했을 때 실행되는 이벤트

 

  • Event Tick : 게임플레이 매 프레임마다 호출되는 이벤트

 

자세한 이벤트 노드에 대한 설명은 아래 주소를 참고하면 된다.

https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/Blueprints/UserGuide/Events/

 

이벤트

키즈멧에서 사용할 수 있는 Event 노드에 대한 문서입니다.

docs.unrealengine.com

 

 

Hello World! 출력하기

이벤트 그래프 판의 빈 곳에 마우스 우클릭을 한 뒤, 검색창에 print string을 치고 선택하면 노드가 생성이 되고, 안에 문구 입력란에 Hello World! 를 입력한 뒤, BeginPlay 이벤트에서 연결시켜주면 실행시 Hello World! 가 출력이 될 것이다. 다음으로는 상단에 Compile을 하고 저장을 눌러준다.

 

 

블루프린트 창을 끄고, 다시 언리얼 에디터 메인 화면으로 돌아가서 Play 버튼을 누르면 좌측 상단에 Hello World! 가 출력되었다가 사라지는 것을 확인할 수 있다.

 

 

블루프린트 노드의 구조와 제어흐름에 관해서 간단하게 설명하자면, 노드는 크게 실행 핀, 입력 핀, 출력 핀의 세 가지 핀으로 구성되어 있고, 제어 흐름의 방향이 왼쪽에서 오른쪽으로 진행된다. 자세하게 설명을 하자면 글이 너무 길어질 것 같아 관련 링크를 첨부한다. 언리얼 4 엔진 문서에 여러가지 정보들이 자세히 나와있으니 참고하면 도움이 많이 된다.

https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/Blueprints/UserGuide/Nodes/

 

노드

이벤트와 함수 호출을 사용해서 블루프린트와 연관된 게임플레이 이벤트에 반응하는 동작을 수행하는 노드 그래프입니다.

docs.unrealengine.com

 

 

변수 선언

변수는 블루프린트 창에서 좌측에 Variables 항목 우측의 [+] 버튼을 눌러 생성할 수 있다. 

 

 

그 후, 오른쪽 Details 패널에서 자료형을 설정하고 Complie을 누르면 실제로 변수가 생성되어 값을 설정할 수 있다.

Integer(정수형)로 자료형을 설정하고 기본 값을 100으로 입력해주겠다.

 

 

변수의 값을 화면에 출력해 보겠다. 좌측 컴포넌트 탭에서 방금 생성한 변수 Num1 을 드래그 앤 드롭하여 변수의 값을 가져와야 하므로 Get Number를 선택한다. 

 

 

Num1을 Print String 노드의 in String 입력 핀에 연결해주면 가운데에 연결 노드가 하나 자동으로 생성되는데 이 노드는 int 형 을 String 형으로 형변환 해주는 노드이다.

 

 

컴파일과 저장을 한 뒤, 다시 에디터로 돌아와 실행을 하면 아래와 같이 100이 출력되는것을 확인할 수 있다.

 

 

같은 방법으로 실수형, 문자형, 논리형 으로 세 개의 변수를 더 추가하였다. 변수를 선택하고 우측 Detail 패널에서 Instance Editable 항목을 체크하면 에디터에서 변수를 수정할 수 있게 노출된다. 또한 밑에 Category 항목에서 자신의 카테고리를 만들고 추가하면 카테고리 별로 변수를 관리할수도 있다.

 

 

에디터 화면에서 설정한 카테고리 안에 변수의 값을 변경할 수 있다.

 

 

함수

함수 또한 변수를 선언한 것처럼 좌측의 Funtion 항목에서 [+] 버튼을 눌러 생성할 수 있다. 함수를 생성하고 이름을 지어주면 함수 탭이 따로 생기게 된다. 이 탭에서 함수의 기능을 정의할 수 있다. 덧셈 함수를 만들어 보도록 하겠다.

 

 

우측의 Detatil 패널에서 입력값과 출력값을 설정할 수 있다. 두 개의 정수의 덧셈 함수를 만들어 볼 것이기 때문에 Inputs 에는 두 개의 정수 parameter, Outputs에는 한 개의 정수 parameter를 추가해준다. 추가를 해 준 다음에 Num0 과 Num1을 더해주어야 하므로 Num0의 입력 핀을 빈공간으로 드래그 해 뜨는 검색창에 + 를 검색해 [int + int] 노드를 추가해준다.

 

 

다음으로 Num1을 아래 입력핀에, 결과 값을 Result 입력 핀에 연결해 주면 끝이다.

 

 

함수가 완성되었으니 저장을 하고 사용해보도록 하자. Event graph 탭으로 가서 Add 함수를 BeginPlay 와 Print String 노드 사이에 배치시키고 미리 선언해 둔 Num0 과 Num1 을 연결해준다 (Num0 변수는 따로 추가해주었다. 값:50). 그리고 나온 결과값을 Print String 의 입력핀에 연결해주고 BeginPlay -> Add -> Print String 순으로 실행핀을 연결시켜주면 끝이다.

 

 

저장을 하고 나와서 실행을 해보면 100 + 50의 결과값인 150이 출력되는 것을 볼 수 있다.

 

 

 

 

 

 

이렇게 기본적인 변수와 함수 생성을 통해 블루프린트의 기본적인 개념을 알아보았다. 다음 장에서는 제어문에 대해 학습해 보겠다.

 

댓글