본문 바로가기
Unreal Engine

Unreal Engine "Do Once" 및 "Do N" 노드 설명

by hfgraphic 2025. 10. 27.
반응형

 

"Do Once" 및 "Do N" 노드 설명

 

자, 이제 Do Once (한 번 실행) 노드와 Do N (N번 실행) 노드에 대해 이야기해 봅시다. 다시 레벨 블루프린트로 돌아가서 열어 보겠습니다.


 

Do Once (한 번 실행) 노드

 

먼저 F 키 이벤트를 사용하여 Do Once 노드를 살펴보겠습니다.

  1. F 키보드 이벤트를 만듭니다.
  1. Do Once 노드를 검색하여 연결합니다.
    • Do Once 노드는 특정 코드를 단 한 번만 실행합니다. 코드를 실행한 후에는 리셋(reset) 하지 않는 한 다시 실행되지 않습니다.
  1. 예시 코드를 추가해 보겠습니다.
    • Print String 노드를 연결하고 "재장전 중..." 또는 "Reloading..." 이라고 출력해 봅시다. (원문: vamos fazer algo divertido. Vamos tentar reloading. - 재장전 예시)
    • Play를 누르고 F 키를 누르면 "Reloading..."이 출력됩니다.
    • F 키를 다시 누르면 아무 일도 일어나지 않습니다. 이것이 바로 Do Once 노드 때문입니다. 한 번만 할 수 있습니다. 다시 실행하려면 리셋해야 합니다.
  1. 리셋 기능을 구현해 봅시다. 총알이 0개가 되면 재장전을 리셋할 수 있도록 하는 시나리오를 사용해 보겠습니다.
    • 변수를 하나 만듭니다. 이름은 Bullets (총알)로 하고 정수(Int) 타입으로 설정합니다.
    • Bullets의 **기본값(Default Value)**을 20으로 설정합니다.
    • G 키보드 이벤트를 만듭니다. 이 키를 누르면 총알이 발사되는 것으로 가정합니다.
    • G 키를 누를 때마다 Bullets 변수의 값을 1 감소시킵니다. ( Set Bullets 노드를 사용하고 현재 값에서 1을 뺀 값으로 설정합니다.)
    • 총알 개수를 화면에 출력해 봅시다.
    • Format Text 노드를 사용하여 "You have {Bullets} bullets left." 와 같은 형식의 텍스트를 만듭니다. (중괄호 {} 안에 변수 이름 Bullets를 넣어 동적 텍스트를 만듭니다.)
    • 총알 개수 변수를 Format TextBullets 핀에 연결합니다.
    • 이 텍스트를 Print String 노드를 사용하여 화면에 출력합니다.
    • Play를 누르고 G 키를 누르면 총알 개수가 감소하는 것을 확인할 수 있습니다.
  1. 총알이 0개일 때 재장전(Do Once) 노드를 리셋하도록 설정합니다.
    • 총알 개수가 0과 같은지 (Equal 노드) 확인합니다.
    • Branch 노드를 사용하여 이 조건이 **참(True)**일 때만 리셋 코드가 실행되도록 합니다.
    • 리셋을 위한 **커스텀 이벤트(Custom Event)**를 만듭니다.
    • Custom Event를 검색하여 만듭니다. 이름은 Can Reload (재장전 가능)라고 합시다.
    • Can Reload 이벤트를 Do Once 노드의 Reset 핀에 연결합니다.
    • 총알이 0개일 때 (BranchTrue 핀) 이 이벤트를 호출(Call) 해야 합니다.
    • Can Reload 이벤트를 검색하여 Call 노드를 만듭니다.
    • 이 노드를 BranchTrue 핀에 연결합니다.
    • 이제 총알이 0개가 되면 Do Once 노드가 리셋됩니다.
  1. 버그 수정 및 Start Closed 설명
    • 현재 상태에서 Play를 누르면, 총알이 20개인데도 F 키를 눌러 바로 재장전(Do Once)이 가능합니다. 이 시나리오에서는 총알이 0개일 때만 재장전이 가능해야 합니다.
    • 이것을 수정하기 위해 Do Once 노드의 Start Closed (닫힌 상태로 시작) 옵션을 활성화합니다.
    • Start Closed는 시작하자마자 Do Once 노드가 잠겨 있어(닫혀 있어) 첫 실행이 불가능하게 만듭니다. 리셋 핀에 이벤트가 들어와서 열어주기 전까지는 실행되지 않습니다.
    • Start Closed를 활성화합니다.
    • Play를 누르고 F 키를 누르면 이제 재장전이 작동하지 않습니다.
    • G 키를 계속 눌러 총알을 0개로 만듭니다.
    • 총알이 0개가 되면 F 키를 누를 수 있습니다. (재장전됨)
    • F 키를 다시 누르면 작동하지 않습니다. Do Once 노드가 다시 잠겼기 때문입니다.
  2. 총알 리셋
    • 재장전을 했으면 총알 수를 다시 20으로 되돌려야 합니다.
    • Do Once 노드의 실행 완료 핀(Exit 핀)에서 Set Bullets 노드를 사용하여 Bullets 값을 20으로 설정합니다.
    • 이제 Play를 눌러 테스트합니다.
    • 총알을 발사해서 0개로 만듭니다.
    • F 키를 눌러 재장전합니다. (Do Once 실행, 총알 20으로 리셋).
    • 총알이 다시 20개가 되었으니 G 키를 눌러 다시 발사할 수 있습니다.

 

Do N (N번 실행) 노드

이제 Do N 노드에 대해 이야기해 봅시다.

  • Do N 노드는 Do Once 노드와 거의 같은 원리이지만, 특정 코드를 N번 실행할 수 있도록 설정합니다.
  1. Do N 노드를 검색하여 연결합니다.
  2. 예를 들어, N 값을 3으로 설정합니다. (이 노드는 코드를 3번 실행합니다.)
  3. Print String 노드를 연결하고 "Here is money" (여기 돈이 있습니다) 라고 출력해 봅시다.
  4. Do N 노드 역시 실행 횟수를 채우면 리셋해야 다시 사용할 수 있습니다.
    • G 키 이벤트를 만들고 이것을 Do N 노드의 Reset 핀에 연결하여 리셋 키로 사용합니다.
  5. Play를 누르고 F 키를 누릅니다.
    • "Here is money"가 3번 출력됩니다.
    • F 키를 다시 눌러도 아무 일도 일어나지 않습니다. Do N 노드의 실행 횟수(3번)를 모두 사용했기 때문입니다.
    • G 키를 눌러 노드를 리셋합니다.
    • 다시 F 키를 누르면 3번 더 실행됩니다.

Do N 노드는 Do Once 노드와 유사하지만, 특정 코드를 몇 번(N번) 실행할지 설정할 수 있다는 점이 다릅니다. 예를 들어, 누군가에게 돈을 줄 때 특정 작업을 완료하여 리셋하기 전까지는 3번만 줄 수 있게 할 때 사용될 수 있습니다.

 

반응형