공부 중 메모/Unreal Engine

블루프린트 - 흐름제어 노드

라이피 (Lypi) 2019. 5. 28. 16:36
반응형

Branch 노드 (단축키 B+Click)

condition으로 들어온 bool값이 True인지 False인지에 따라 흐름을 분기시키는 노드. 

C++에서는 if문이라고 생각하면 된다. 

 

 

 

Sequence 노드 (단축키 S+Click)

  동시에 병렬로 처리되어야 하는 노드들을 연결할 때 쓰는 노드. 

  위와 같이 연결되어 있으면 A B C D E F G H 순으로 처리될 것이라고 착각하기 쉬운대 시퀀스는 병렬 처리 노드이기 때문에 B (Delay) E F H 에 바로 신호를 보낸다. 일단 위에서부터 보내므로 E F H 순서는 맞지만 H의 경우 F와 G가 다 실행되고 실행되는 것이 아니라 F, H의 경우 F가 신호를 받고 바로 H가 신호를 받는다는 것이다. 

  위의 예는 모든 노드가 동일한 노드이므로 처리 속도가 거의 비슷하겠지만 신호를 먼저 받은 노드(예를 들어 Delay)의 처리 속도가 느리면 그 뒤에 이어진 노드(C나 D)보다 아래의 노드의 다음 노드 (예를 들어 Branch와 G)가 더 먼저 실행된다.

  또한 지금 상황에서는 G는 실행될 수 없는데 F 줄이 모두 실행되고 H가 실행되는게 아니므로 H는 G의 실행 여부와는 상관없이 F다음으로 실행이 된다.

 

 (이렇게 자세히 적어놓는 이유는 내가 한동안 이를 잘못 이해하고 있었기 때문이다..)

 

Do N 노드 (단축키 N+Click)

최대 N번까지 뒤의 노드를 실행시켜주는 노드. 주의할 점은 DoN은 반복문이 아니다.

  Do N노드는 자체적으로 N이라는 정수를 가지고 있으며 이는 0부터 시작하고, Enter로 신호가 들어올때마다 이 N의 값을 올리면서 Exit로 신호를 내보낸다.  그리고 N이 지정된 값을 초과하면 그 후부터는 Enter로 신호가 아무리 들어와도 Exit로는 신호가 나가지 않는다. Reset노드는 이 N의 값을 0으로 초기화시켜주는 노드. 

 

  예를 들자면 탄약이 10발이 들어있는 총을 생각하면 된다.

  방아쇠(Enter)를 100번을 당겨도 총은 처음 10번만 나가며 다시 쏘고 싶다면 재장전(Reset)을 해줘야 하는 식.

 

DoOnce 노드 (단축키 O+Click)

위의 노드에서 N이 1인 경우. 

Start Closed가 False이면 카운터가 0으로 시작한 것이고, 

True이면 1로 시작한 것. (그러므로 reset이 한번 들어가야만 작동이 된다.)

 

 

 

While 노드

C++에서의 While문과 같다.

condition이 무조건 True이면 무한루프이므로 에러가 난다.

그외의 경우라면 Condition이 True이면 Completed로 신호를 보낸다.

 

 

 

ForLoop 노드

C++에서의 For문

for (int i = First_Index; i <= Last_Index; i++)와 같다.

주의할 점은 <= 라는 점.

반복이 끝나면 Completed로 신호를 보낸다.

 

 

 

ForLoopWithBreak 노드

위와 같은데 Break를 만나면 바로 Complete를 반환하는 노드.

Break일 때 실행을 중지하는게 아니고 Complete를 반환한다는 것에 주의할 것.

 

 

 

 

 

 

FlipFlop 노드

 홀수번째 신호가 들어왔을 땐 A로, 짝수번째 신호가 들어왔을 땐 B로 분기시키는 노드.

아주 간단한 경우가 아니라면 지금 A로 나갈 차례인지 B로 나갈 차례인지 매우 헷갈린다. 

Bool값인 IsA는 현재 출력이 A이면 True, B이면 False이다.

 

 

 

Gate 노드 (단축키 G+Click)

  Enter로 들어온 신호를 Gate의 상태가 Open이면 내보내고, Close면 안 보내는 노드.

Open은 상태를 무조건 Open으로 만드는 신호

Close는 상태를 무조건 Close로 만드는 신호

Toggle은 상태가 Open이면 Close로, Close면 Open으로 바꿔주는 신호이다.

Start_Closed가 True이면 초기 상태가 Close이고 False이면 Open이다.

 

 

 

 

MultiGate 노드 (단축키 M+Click)

  신호가 들어오면 처음엔 Out0, 다음엔 Out1로 신호를 내보내는 노드.

신호처리와 Reset은 DoN과 같고, 순서대로 실행되는 건 시퀀스와 비슷하다. 

Loop가 False이면 마지막 핀까지 실행되고 나면 더 이상 신호를 내보내지 않는다.

Loop가 True이면 마지막 핀이 실행된 뒤에 들어온 신호는 out0으로 내보낸다.

IsRandom이 True이면 무작위 순서로 실행된다.

StartIndex가 0이하이면 맨 처음이 out0이다. StartIndex가 0보다 큰 N이면 맨 처음은

OutN이다. 이 때 출력핀이 N보다 적다면 (N이 5인데 Out4까지 밖에 없다면) 경고 로그가 뜨고 Out0부터 출력된다.

 

  주사위같은걸 만들기 좋아 보이는 노드(..)

 

switch는 패스

반응형