Ad Block 한번만 꺼주시면 안될까요..?
게임 개발/Unreal Engine 5

Unreal Engine 5) 최초실행, 반복실행(주기함수), Hello World 출력하기(Blue print)

UniCoti(유니코티) 2023. 3. 11.

오늘은 언리얼을 한지 한 10시간 정도 된 듯한데

처음으로 로직에 관하여 공부를 해보았다.

코딩을 이미 해봐서 알다시피, 가장 처음 배우는건

언제나 "Hello World" 출력하기 이다.

 

이번 글에선 언리얼의 주기함수 최초실행, 반복 실행과 함께

Hello World를 간단히 출력해보겠다.

 

https://alpaca-code.tistory.com/213 (이 내용을 포함한 글)

 

Unreal Engine 5) (Level) 블루프린트 사용 방법.

이번 글에서는 언리얼 엔진 5의 기초 시스템 중 하나인 블루 프린트 사용 방법에 대해서 정리를 해보도록 하겠다. 먼저, 블루 프린트를 작성할 파일은 얼마든지 만들 수 있으나 이 글 내에서는 Le

alpaca-code.tistory.com

 

(지금 출력한 Hello World가 수년 뒤 진짜보다 리얼한 게임이 되어있길 바란다.)


1. 세팅

로직을 구현하기 위해선, Player Controller 클래스의 Blue Print를 만들어줘서

관리해야 하는 것으로 배웠다.

 

Blue Print가 생성되었다면, Edit -> Project Settings로 가준다.

여러 가지의 탭중 Maps & Modes로 가주고,

Player Controller Class에 만들어준 Blue Print를 연결해준다.

 

그 후, Blue Print를 열어보면, Viewport가 기본적으로 있을 것이다.

옆의 탭인 Event Graph를 열어주자.

그러면 이러한 노드가 기본적으로 2개 나오게 된다.

이제부터 각각의 노드의 기능을 소개해보겠다.


2. 최초실행(Event BeginPlay)

게임 엔진에는 거의 무조건 최초실행이라는 개념이 있다.

예를 들자면, 유니티에도 Start( )라는 이름으로 존재한다.

 

https://alpaca-code.tistory.com/91 (유니티의 주기함수)

 

유니티 Start()문, Update() , Awake() , FixedUpdate()문

유니티에서 스크립트(C#)을 만들고 파일을 열어보면 이렇게 되어 있을것이다. 유니티를 처음 시작하는 사람이라면 이게 뭐하는 것인지 모를것이다. 그래서 초보자의 입장으로 이 두 기초 함수들

alpaca-code.tistory.com

로딩이 있는 이유도 켤때(최초 실행)무언가 로직이 있기 때문일 것이다.

 

아무튼 이러한 이유로 존재하는 최초 실행을 담당하는

노드의 이름은, "Event BeginPlay"이다.

 

해석해보면 대충 시작하는 의미일 것 같지 않은가?

여기에 여러개의 노드로 로직을 구성해 연결해주면,

시작할때 한번 실행되며 로직을 수행하게 된다.

(예제는 4번에서)


3. 반복실행(Event Tick)

마찬가지로, 반복실행은 게임에서의 사실상 모든것을 관장한다.

플레이어의 움직임, 계속 확인해야 하는 어떠한 값,

조건문, 물리연산 또한 프레임마다 일어날 것이며,

 

사실상 반복실행이 없다면 어떠한 버튼을 누르는 등

플레이어의 입력이 있어야만 어떠한 기능이 실행될 것이다.

 

그만큼 중요한 반복실행은, 마찬가지로 유니티에도

Update( )라는 이름으로 존재한다.

 

https://alpaca-code.tistory.com/91 (유니티의 주기함수)

 

유니티 Start()문, Update() , Awake() , FixedUpdate()문

유니티에서 스크립트(C#)을 만들고 파일을 열어보면 이렇게 되어 있을것이다. 유니티를 처음 시작하는 사람이라면 이게 뭐하는 것인지 모를것이다. 그래서 초보자의 입장으로 이 두 기초 함수들

alpaca-code.tistory.com

어쨌든, 언리얼 엔진(Blue Print)에서의 반복실행은

노드 "Event Tick"에서 관리한다.

 

Event Tick은 컴퓨터의 성능에 맞춰 프레임마다

한 로직을 수행한다. 노드 "Event BeginPlay"는 시작할때 한번이라면

Event Tick은 그냥 게임이 시작한 이래 계속 실행된다고 보면 편할 듯 하다.

(예제는 4번에서)


4. Hello World 출력하기 (간단한 예제)

마지막으로, 간단한 예제를 실행해보며 글을 마무리 하겠다.

무엇이 가장 간단하게 실행 할 수 있는 예제일까?

 

사실 제목으로 보다시피 "Hello World" 출력하기이다.

나(필자) 또한 언리얼 만큼은 배우는 중이기 때문에

아직 몇개의 노드밖에 이해하지 못했다.

 

그렇기 때문에 가장 간단하며, 알려주기 확실한

"Hello World"를 출력해보도록 하겠다.

 

"Hello World"를 찍기 위해서는, 문자열을 출력하는 노드를 알아야 한다.

그 역할을 하는 노드의 이름은, "Print String"이다.

(빈 공간에 우클릭해서 검색한 후 선택해서 생성해주면 된다)

이렇게 만들어 줬으면, In String 안에 있는 말을

"Hello World"로 바꿔준다.

먼저, 최초실행부터 해보겠다.

Event BeginPlay의 가장 우측의 삼각형(?)을 드래그해서,

Print String의 가장 좌측의 삼각형(?)에 드롭해준다.

그럼 이렇게 연결된다. 그럼 저장하고, Viewport로 가서 게임을 실행해보면?

화면 끝(좌측 상단)에 Hello World가 조그맣게 표시되는걸 볼 수 있다.


이제, 반복실행을 해보겠다. 사실 위에도 어려운게 없었다시피, 

그냥 위에 처럼 연결해주면 된다. 참고로 저 선(연결)을 끊으려면

우클릭 -> Break All Pin Link(s) 를 클릭해주면 끊어진다.

그럼 이제 이걸 끊은 후, 

Event Tick과 연결해주고,

아까와 같이 저장 후 Viewport로 돌아가 실행해주면?

프레임 마다 계속 좌측에 Hello World가 무수히 찍히는 걸 볼 수 있다.


여기까지 언리얼의 최초실행, 반복실행, Hello World 출력까지 알아보았다.

이 배움이 몇년 뒤에 어떻게 보일 지 궁금하다.

 

글이 좀 길어진 경향이 있는데 좀 나눌걸 그랬다.

좀 갑자기 끝내는 경향이 있지만,


 

이상으로 도움이 되었길 바라며,

 

끝.

댓글

💲 추천 글