본문 바로가기
Unreal

[언리얼 02.03]블루프린트 이벤트 그래프, 노드, 노드 생성, 노드 제거

by 우타미 2025. 2. 3.
728x90

 

9 to 7 학원에 있어야 하는 고통을 아는가? 실습시간이 주어졌을 때 필자는 2D 쪽으로 공부하는 편이다. 왜냐면 우리 반은 XR기반 게임콘텐츠 개발 어쩌구 반이라서 3D위주의 수업이기 때문에 2D는 알아서 공부해야 한다고~ 그래서 필자의 블로그도 뭐 3D도 다루긴 할 꺼지만 2D를 주로 올려볼 생각이다.
그리고 코딩무말랭이인 나는 최단기간 프로젝트를 만들어야 하는 상황에 쳐해있기때문에 블루프린트를 주로 조져볼 생각이다. 물론 코딩공부를 소홀히 하진 않을 것이다. (그냥... 짧은 시간 내에 좀 더 좋은 퍼포먼스를 낼 수 있는 곳에 투자하겠다는 뜻)

 

저번시간까지 블루프린트 클래스 생성과 인스턴스를 배치해보았다.  아래링크를 통해 확인 가능

2025.01.27 - [Unreal] - [언리얼 01.27] 블루프린트는 무엇인가, 블루프린트 생성 방법, 클래스와 인스턴스

 

[언리얼 01.27] 블루프린트는 무엇인가, 블루프린트 생성 방법, 클래스와 인스턴스

1월 27일 임시공휴일이지만 필자는 학원에 나와야 한다고 한다. 하... 그래서 블루프린트 공부하는 겸사겸사 블로그 글도 올려볼까 한다. 1. 블루프린트는 무엇인가?Blueprint 는 시각 프로그래밍

tami-u.tistory.com

 

 

 

1. 이벤트 그래프

이벤트 그래프 화면

블루프린트를 열어보면 Event Graph 창을 확인 볼 수 있다.

설계도면이다. 이곳에서 다양한 기능을 추가하고 수정할수 있다. 빈 공간에 마우스 우클릭을 해보자
다양한 기능들을 볼 수 있다.

마우스 우클릭으로 확인가능한 다양한 기능들


C, C++ 처음 시작하면 "Hello World"를 제일먼저 출력해 보았을 것이다.  이번 블로그의 취지도 블루프린트로 "Hello World" 출력하기이다. 먼저 스트링 노드를 만들어보자

2. 노드

그럼 노드란 무엇인가?

Node (노드)란 그래프에서 사용할 수 있는 이벤트, 함수 호출, 흐름 제어 동작, 변수 등과 같은 오브젝트로, 블루프린트를 사용하는데 미리만들어진 기능이라고 보면 된다.

각 노드는 핀을 가질 수 있으며

흰색 삼각형의 Execution pins (실행 핀)은 실행 흐름을 만드는 핀
색깔이 있는 Data pins(데이터 핀)은 데이터를 받거나 출력하는데 사용된다.

 

보통 블루프린트를 생성하게 되면 이벤트 그래프에 3개의 노드를 볼 수 있는데

Event BeginPlay 노드 엑터가 초기화 될 때 한번만 트리거(ex. 게임 시작 시점, 엑터 생성 시점)
Event ActorBeginOverlap 노드 다수의 조건이 동시에 만족했을 때 실행되는 이벤트
Event Tick 노드 엑터가 활성화 되어 있는동안 모든 프레임에서 호출(주로 캐릭터 속도 변경, 객체 추적용)

라고 보면 된다. 이 중 Event BeginPlay 노드와 Event Tick 노드를 통해  "Hello World"를 출력하며 차이점을  알아보자!

3. 노드 생성

노드를 생성하는 두가지 방법

1. 빈 이벤트 그래프에서 마우스 우클릭을 한다. 
본인이 찾는 노드를 검색해 클릭하면 노드가 생성된다.

2. 아웃풋 실행핀을 클릭 드래그(빈 이벤트 그래프창) 클릭해제하면 노드를 생성할 수 있는 창이 뜬다. 
둘 중 어떠한 방법이라도 좋다. 
이제 print string이라는 노드를 생성해 "Hello World"를 출력해 보자

Event BeginPlay  실행핀과 Print String 연결해 주고 in String에 "Hello world"입력

화면 좌측 상단의 compile 클릭 또는 단축키 F7 입력, 저장 단축키 ctrl + Shift+ S 후 
(컴파일 또는 저장이 되지 않으면 반영되지 않는 것들이 있어 무언가 수정된다면 습관적으로 컴파일 저장을 하자)
Map에서 실행을 해보자

뷰포트 좌측상단에 Hello world 가 출력되는 것을 볼 수 있다. 
만약 인스턴스를 여러개 배치한다면 어떻게 될까?

"Hello world"가 인스턴스의 개수에 따라 출력되는 것을 확인할 수 있다.

똑같이 Print String 노드를 만들어 "I'm Tami"를 입력해 보았다. 실행핀의 흐름을 잘 확인해 보자

Event BeginPlay -> "Hello World" -> "I'm Tami" 순으로 연결하면 어떻게 출력될까?

오래된 순으로 맨 밑으로 가고 최근순이 위라는 점을 알고 있으면 좋다. 필자는 처음에 띄용? 했음
자 이제 Event BeginPlay 노드가 어떻게 돌아가는지 감이 올 것이다.

다음은 Event Tick 노드에 똑같이 적용해 보자 아니다 그전에 노드 제거방법을 알아보자

4. 노드 제거

지우고 싶은 노드를 선택해 노란색으로 활성화되면 Delete를 누르면 된다. 
많은 노드를 지우고 싶다면 클릭 앤 드래그로 영역을 지정해서 지워주면 된다.

만약 연결하는 선만 지우고 싶다면 어쩌죠? 
이러한 경우는 Alt + 선 클릭 하면 연결된 선이 해제된다.

또 다른 방법은 연결선을 더블클릭하면 중간에 경유노드가 생성된다. 
경유노드를 선택 후 Delete를 누르면 연결선이 제거된다.
필자는 이 방법은 번거로우니 Alt를 사용해 없애기로 하겠음

더블클릭으로 생성된 경유 노드

자 다시 본론으로 돌아와 Event Tick 노드를 알아보자


앞서 설명했듯이 엑터가 활성화되어 있는 동안모든 프레임에서 호출되기 때문에 똑같은 "Hello world"를 출력해 보면


끊임없이 "Hello World"가 출력되는 것을 확인할 수 있다.

뷰포트 좌측 상단의 메뉴에서 Show FPS를 누르면 초당 몇 프레임으로 출력되는지 확인 할 수 있다.

120번 가까이 출력을 하니 얼마나 어마무시한 노드인지 감이 올 것이다. 

오늘은 노드생성과 제거 그리고 Event BeginPlay, Event Tick 노드의 차이점에 대해 알아보았다.

노드에 대한 자세한 설명은-> https://dev.epicgames.com/documentation/ko-kr/unreal-engine/nodes-in-unreal-engine

이벤트에 대한 자세한 설명은 ->https://dev.epicgames.com/documentation/ko-kr/unreal-engine/events-in-unreal-engine#eventactorbeginoverlap

언리얼 공홈에 자세히 나와있으니 참조 바란다.


사담

 

3월부터 학원 팀 프로젝트 들어간다는데 아.. 코딩무말랭이 우타미는 지금 발등에 불이 난 상황이다. 
한 달 만에 블루프린트 마스터 가능? 할까라는 나름 심적 고민.... 그게 안되면 그저 머릿수 채우길 바라는 코딩짱의 선택을 기다릴 수밖에 (쏯) 뭐 어떻게든 되는 거 아니겠는가
진인사대천명이요. 인간으로서 해야 할 도리를 다한 후 하늘에 맡기겠다. 마인드로 사는 중입니다.

728x90