흐름 제어

조건에 따라 실행 흐름을 제어할 수 있는 노드입니다.

Windows
MacOS
Linux

스위치 노드

Switch (스위치) 노드는 데이터 입력을 읽어들여, 그 입력된 값에 따라 일치하는 (또는 옵션을 통한 기본) 실행 출력으로 실행 흐름을 전송합니다. 사용할 수 있는 스위치의 종류는 여러가지 있습니다: Int, String, Name, Enum.

일반적으로 스위치에는 실행 입력과, 스위치에서 구하는 데이터 유형의 데이터 입력이 있습니다. 출력은 모두 실행 출력입니다. Enum 스위치는 Enum 의 프로퍼티에서 출력 실행 핀을 자동 생성하는 반면, Int, String, Name 스위치에는 커스터마이징 가능한 출력 실행 핀이 있습니다.

스위치 노드 편집

IntString 또는 Name 스위치 노드가 블루프린트 에 추가될 때 유일하게 사용가능한 출력 실행 핀은 Default (기본) 핀입니다. Default 출력 핀은 입력 핀과 일치하는 다른 지정된 출력 핀이 없을 때 발동됩니다. 이 핀을 제거하기 위해서는, 핀에 우클릭한 다음 Remove Execution Pin (실행 핀 제거)를 선택하거나, 스위치 노드의 디테일 탭에 있는 Has Default Pin (디폴트 핀 보유) 옵션을 꺼 주셔야 합니다.

NewSwitchOnInt.png

Int 스위치 편집:

  1. 그래프 탭에서 스위치를 선택하여 디테일 탭에 프로퍼티를 띄웁니다.

  2. Start Index (시작 인덱스)를 검사하고자 하는 최저 정수값으로 변경합니다.

    SwitchOnInt_StartIndex.png

  3. 스위치 노드의 Add Pin (핀 추가)에 클릭하여 Start Index (시작 인덱스) 값을 가진 핀을 추가합니다.

    SwitchOnInt_AddPin.png

    Add Pin (핀 추가)를 계속 클릭하면 핀이 추가되며, 그 때마다 값은 1 씩 증가합니다. 실행 핀을 제거하려면, 핀에 우클릭한 다음 Remove Execution Pin (실행 핀 제거)를 선택합니다. 참고로 Switch on Int 노드의 출력 실행 핀을 제거하면 그보다 높은 값의 핀은 값이 1 씩 감소되어 빈 번호를 메꿉니다.

Name 또는 String 스위치 편집:

  1. 그래프 탭의 스위치 노드를 선택하여 디테일 탭에 그 프로퍼티를 띄웁니다.

  2. Pin Names (핀 이름) 오른편의 Add Pin 아이콘을 클릭합니다.

  3. 뜨는 글상자에서 비교하고자 하는 String 또는 Name 을 입력하세요.

    SwitchOnString_NamePin.png

    SwitchOnString_WithPin.png

추가하고자 하는 핀이 더 있으면 위 과정을 반복합니다. 디테일 탭의 원하는 핀 옆에 있는 Pin Options 아이콘을 클릭하여 핀을 복제, 삽입, 삭제할 수도 있습니다. 실행 핀을 삭제하려면, 핀에 우클릭한 다음 Remove Execution Pin (실행 핀 제거)를 선택해도 됩니다.

표준 Flow Control 노드

이 노드들을 통해 다양한 방법으로 실행 흐름을 제어할 수 있습니다.

FlowControlExpanded.png

분기

Branch_Example.png

Branch (분기) 노드는 하나의 True / False 조건에 따라 단순한 의사 결정 기반 흐름을 만들어 냅니다. Branch 노드는 실행되고 나면 첨부되어 들어오는 Boolean 값을 살펴본 다음, 적합한 출력 통로로 실행 신호를 출력합니다.

여기 간단한 예제에서는 현재 부울 값의 상태를 검사합니다. True 면 불빛 색을 빨강으로, False 면 파랑으로 설정합니다.

클릭하면 이미지 원본을 확인합니다.

항목

설명

입력 핀

(무제)

분기 검사를 발동시키는 실행 입력입니다.

Condition

발동시킬 출력 핀을 선택하는 데 사용되는 부울 값을 받습니다.

출력 핀

True

들어오는 조건이 True 면 이 실행 신호를 출력합니다.

False

들어오는 조건이 False 면 이 실행 신호를 출력합니다.

DoN

DoN Example

DoN (N 번 실행) 노드는 실행 신호를 N 번 발동시킵니다. 한계치에 도달한 이후에는 Reset 입력에 신호가 전송될 때까지 나가는 실행 신호를 중지합니다.

예를 들어 탈것의 시동을 스무 번 건 다음에는, Reset 입력이 활성화되었을 때에 묶여있는 연료보급 이벤트시까지 시동이 걸리지 않는 것입니다.

클릭하면 이미지 원본을 확인합니다.

항목

설명

입력 핀

Enter

DoN 검사를 트리거시키는 실행 입력입니다.

n

DoN 노드 트리거 횟수를 설정하는 입력입니다.

Reset

DoN 노드가 다시 트리거될 수 있도록 리셋시키는 실행 입력입니다.

출력 핀

Exit

DoN 이 N 번 이상 트리거되지 않았을 때, 또는 Reset 입력이 호출되었을 때만 트리거되는 실행 핀입니다.

DoOnce

DoOnce_Example.png

DoOnce (한 번 실행) 노드는 이름 그대로 실행 신호를 한 번만 발동시킵니다. 그 시점부터는 Reset 입력에 신호를 별도로 주지 않는 이상 실행 신호를 내보내지 않습니다. 이 노드는 DoN 노드에서 N = 1 일때와 같습니다.

예를 들어 DoOnce 를 통해 문을 여는 네트워크를 만들었다면 그 문은 한 번만 열리게 됩니다. 그러나 Reset 에 트리거를 묶어 두고서 그 트리거가 활성화되면 문이 다시 열리도록 할 수도 있습니다.

클릭하면 이미지 원본을 확인합니다.

항목

설명

입력 핀

(무제)

DoOnce 검사를 발동시키는 실행 입력입니다.

Reset

DoOnce 노드가 다시 발동될 수 있도록 리셋시키는 실행 입력입니다.

출력 핀

Completed

아직 DoOnce 가 발동되지 않았거나 Reset 입력이 호출된 경우에만 발동되는 실행 핀입니다.

FlipFlop

FlipFlop_Example.png

FlipFlop (플립플롭) 노드는 두 출력을 번갈아 실행시키는 출력입니다. 첫 호출시에는 A 출력을, 두 번째는 B 출력을, 그 이후로 A, B, 계속 번갈아 가며 실행합니다. 이 노드에는 A 출력 호출 시점을 추적할 수 있는 부울 출력도 있습니다.

클릭하면 이미지 원본을 확인합니다.

항목

설명

입력 핀

(무제)

FlipFlop 을 발동시키는 실행 입력입니다.

출력 핀

A

FlipFlop 첫 번째와 홀수 번째 호출시마다 호출되는 출력 핀입니다.

B

FlipFlop 두 번째와 짝수 번째 호출시마다 호출되는 출력 핀입니다.

Is A

A 출력이 발동되었는지를 나타내는 부울 값을 출력합니다. 실제적으로는 FlipFlop 노드가 발동될 때마다 True / False 가 바뀌는 값입니다.

ForLoop

ForLoop_Example.png

ForLoop 노드는 표준 코드 루프처럼 시작 / 끝 인덱스 도중 실행 신호를 발동시키는 식으로 작동합니다.

여기 간단한 예제에서는 플레이어가 간단한 레벨 트리거를 건드릴 때 루프가 발동됩니다. 이 루프는 10 회 반복처리 도중 접두사에 반복횟수를 출력하는 Print String 을 호출합니다.

Loop 반복처리는 여러 프레임에 걸쳐 일어나므로, 루프가 크면 퍼포먼스에 영향을 끼칠 수 있습니다.

클릭하면 이미지 원본을 확인합니다.

항목

설명

입력 핀

(무제)

루프를 실행하는 실행 입력입니다.

First Index

루프의 첫 인덱스를 나타내는 Int 를 받습니다.

Last Index

루프의 끝 인덱스를 나타내는 Int 를 받습니다.

출력 핀

Loop Body

인덱스 범위 내 루프 반복처리마다 실행 신호를 출력합니다.

Index

루프의 현재 인덱스를 출력합니다.

Completed

for 루프가 완료되었을 때 발동되는 표준 실행 출력 핀입니다.

ForLoopWithBreak

ForLoopWithBreak_Example.png

ForLoopWithBreak 노드는 ForLoop 노드와 매우 비슷한 방식으로 동작하나, 루프를 중단할 수 있는 입력 핀이 들어있다는 점이 다릅니다.

여기 간단한 예제에서는 플레이어가 간단한 레벨 트리거를 건드리면 루프가 발동됩니다. 루프는 1,000 번 반복처리하는데, 매번 Branch 를 통해 루프가 500 번 돌았는지 검사합니다. 아직 돌지 않았다면 현재 반복처리 횟수를 화면에 출력합니다. 500 회를 넘으면 Branch 는 Custom Event 를 호출, 여기서 루프를 중단합니다. 여기서 Custom Event 는 시각적인 깔끔함을 위해, Break 입력 핀에 다시 연결하느라 선이 꼬이지 않도록 하기 위해 사용되었습니다.

루프 반복처리는 여러 프레임에 걸쳐 일어나므로, 루프가 크면 퍼포먼스 영향이 있을 수 있습니다.

클릭하면 이미지 원본을 확인합니다.

BrokenAt500.png

항목

설명

입력 핀

(무제)

루프를 실행시키는 실행 입력입니다.

First Index

루프의 첫 인덱스를 나타내는 Int 를 받습니다.

Last Index

루프의 끝 인덱스를 나타내는 Int 를 받습니다.

Break

루프를 중단하는 실행 입력입니다.

출력 핀

Loop Body

인덱스 범위 내에서 루프 반복처리시마다 실행 신호를 출력합니다.

Index

루프의 현재 인덱스를 출력합니다.

Completed

for 루프가 완료되면 발동되는 표준 실행 출력 핀입니다.

Gate

Gate_Example.png

Gate 노드는 실행 흐름을 열고 닫는 데 사용됩니다. 간단히 말해서 Enter 입력은 실행 신호를 받아들이며, Gate 의 현재 (열렸는지 닫혔는지) 상태에 따라 그 신호를 Exit 출력으로 통과시킬지 말지를 결정하는 것입니다.

여기 간단한 예제에서는 트랙 없는 타임라인으로, 자동-재생과 반복을 켜 두었으며, Gate 의 Enter 입력 핀을 업데이트합니다. 레벨에는 두 개의 트리거가 있습니다. 하나는 Gate 를 열고, 다른 하나는 닫습니다. Gate 가 열려 있으면 실행 신호는 Exit 핀을 빠져나가 Print String 을 호출하여 화면에 메시지를 출력합니다. 플레이어가 Close 트리거를 건드리면 Gate 가 닫혀 메시지가 출력되지 않습니다. Open 트리거를 다시 건드리면 메시지가 다시 나타납니다.

클릭하면 이미지 원본을 확인합니다.

항목

설명

입력 핀

Enter

Gate 로 조절할 실행을 나타내는 실행 입력입니다.

Open

Gate 를 열린 상태로 설정하여 실행 신호를 Exit 출력 핀으로 통과시키는 실행 핀입니다.

Close

Gate 를 닫힌 상태로 설정하여 실행 신호가 Exit 출력 핀으로 나가지 못하게 막는 실행 핀입니다.

Toggle

Gate 의 현재 상태를 반전시키는 실행 핀입니다. 열렸으면 닫히고, 닫혔으면 열립니다.

Start Closed

Gate 의 초기 상태를 나타내는 부울 입력입니다. True 면 Gate 는 닫힌 상태로 시작합니다.

출력 핀

Exit

Gate 가 현재 열린 상태이면 Enter 입력 핀을 건드리는 실행 신호는 Exit 출력 핀을 나가는 신호를 냅니다. 닫힌 상태면 Exit 핀은 작동하지 않습니다.

MultiGate

MultiGate_Example.png

MultiGate 는 하나의 데이터 신호를 받은 다음 여러 출력으로 경유시킵니다. 그 방식은 순서가 있을 수도 없을 수도 있고, 반복을 할 수도 안할 수도 있습니다.

여기 예제에서는 단순한 루핑 자동재생 타임라인이 0.5 초마다 신호를 출력합니다. 이 신호가 MultiGate 를 만나면 적당히 경유시켜 일련의 Print String 노드 중 하나를 발동시키고, 순서대로 재생하면 특별한 메시지가 나타납니다.

클릭하면 이미지 원본을 확인합니다.

항목

설명

입력 핀

(무제)

이 MultiGate 가 경유시킬 신호를 받는 주요 실행 핀입니다.

Reset

기본적으로는 현재 출력 인덱스를 0 으로, 아니면 -1 이 아닌 경우 현재 Start Index 값으로 설정합니다.

Is Random

True 면 출력을 무작위로 선택합니다.

Loop

True 면 출력이 루프로 계속해서 반복됩니다. False 면 MultiGate 는 모든 출력을 사용한 이후 작동 중지됩니다.

Start Index

MultiGate 가 처음 사용할 출력 인덱스를 나타내는 Int 를 받습니다. 값이 -1 이면 시작 번호를 지정하지 않는 것과 같습니다.

출력 핀

Out #

각 출력 번호는 MultiGate 가 경유된 실행 신호를 내보내는 데 사용할 수 있는 출력 핀을 나타냅니다.

Add pin

진짜 출력 핀은 아닐지라도 이 핀을 통해 원하는 만큼의 출력을 추가시킬 수 있습니다. 출력에 우클릭한 후 '출력 핀 제거'를 선택하면 제거할 수 있습니다.

시퀀스

Sequence_Example.png

Sequence 노드는 한 번의 실행 신호로 일련의 이벤트를 순서대로 발동시키는 노드입니다. 이 노드에는 출력이 몇이든 있을 수 있으며, Sequence 노드가 입력을 받자마자 그 모두가 호출됩니다. 그들 모두 순서대로 지연 없이 호출됩니다. 전형적인 사용자에게는 이 출력들이 동시에 발동된 것 처럼 보일 것입니다.

이 예제에서 Sequence 노드는 레벨 시작시 호출됩니다. 그런 다음 5 rodml Print String 노드를 순서대로 발동시킵니다. 그러나 별다른 지연이 없기 때문에 메시지가 거의 동시에 출력되는 것처럼 보입니다.

클릭하면 이미지 원본을 확인합니다.

항목

설명

입력 핀

(무제)

이 Sequence 가 경유시킬 신호를 받는 주요 실행 입력입니다.

출력 핀

Out #

각 출력 번호는 Sequence 가 경유된 실행 신호를 내보내는 데 사용할 수 있는 출력 핀을 나타냅니다.

Add pin

진짜 출력 핀은 아니지만, 이 버튼을 통해 출력을 원하는 만큼 추가시킬 수 있습니다. 출력에 우클릭한 후 '출력 핀 제거'를 선택하면 제거할 수 있습니다.

WhileLoop

BP_WhileLoop-1.png

테스트 조건과 바디가 WhileLoop 를 이루는 전부입니다. 바디의 명령문을 실행하기 전, 블루프린트는 WhileLoop 의 테스트 조건을 평가하여 true 인지 결정합니다. 바디의 명령문을 실행한 이후, 블루프린트는 테스트 조건을 다시 평가하고, 그대로 true 면 루프 바디의 명령문 실행을 계속합니다. 아니면 테스트 조건이 false 를 반환한 경우, 블루프린트는 루프를 중단하고 바디를 빠져 나갑니다.

노드의 핀을 설명하는 표는 다음과 같습니다.

항목

설명

입력 핀

(무제)

이 WhileLoop 를 구동시키는 신호를 받는 주요 실행 입력입니다.

Condition

루프의 테스트 조건입니다.

출력 핀

Loop Body

인덱스 범위 내 루프 반복처리마다 실행 신호를 출력시킵니다.

Completed

루프가 끝나자마자 발동되는 표준 실행 출력 핀입니다.

실전 사례: WhileLoop 를 사용할 때는 다음 질문사항을 고려해 보세요.

  • 루프의 중단 조건은 무엇인가요?

  • 루프의 첫 테스트 전 조건이 초기화되나요?

  • 조건을 다시 테스트하기 전 각 루프 사이클에서 조건 업데이트가 일어나고 있나요?

이 세 가지 질문에 답변해 보면 게임에 응답 없음 (또는 크래시) 발생 원인을 제거하는 데 도움이 됩니다.

사용 예

다음 예제는 뷰포트Start WhileLoop 를 출력한 (1) 뒤 WhileLoop 바디에 들어가 CounterCount Limit 미만인지 평가합니다(2). 테스트 조건(2)이 true 로 평가되는 동안, 블루프린트는 WhileLoop 바디에 남아 카운터 정수를 증가시킨 뒤 Counter Value: [Counter] 를 뷰포트에 출력합니다(3). 테스트 조건(2)이 false 로 평가되면, 블루프린트는 WhileLoop 바디를 빠져나오고 WhileLoop Completed 를 뷰포트에 출력합니다.

클릭하면 이미지 원본을 확인합니다.

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼