반응형
실행 흐름 (Execution Flow) 소개
실행 흐름의 기본 원칙 복습

이전에 이야기했듯이, **실행 흐름(Execution Flow)**의 기본 원칙은 코드가 항상 **시간 순서(chronologically)**로 실행된다는 것입니다.
- **이벤트(Event)**에서 시작하여,
- 다음 노드로 이동하여 실행하고,
- 그다음 노드로 이동하여 실행하는 식으로 이어집니다.
- 직선적 흐름: 코드는 이 흰색 선을 따라 순서대로 실행되며, 이 코드를 실행하지 않고는 다음 코드로 건너뛸(jump) 수 없습니다.
실행 흐름을 바꾸는 노드

하지만 실행 순서 또는 실행 흐름은 특정 노드들을 사용하여 변경될 수 있습니다.
- 예를 들어, 나중에 다룰 Sequence (시퀀스) 노드를 보면, 코드가 직선적인 흐름을 따르지 않고 다른 방향으로 나아갈 수 있음을 알 수 있습니다. 시퀀스 노드는 하나의 코드를 실행한 다음, 그 뒤에 또 다른 코드를 실행하도록 흐름을 만들 수 있습니다.
우리는 이제 실행 흐름을 바꿀 수 있는 노드들과 각각의 의미에 대해 자세히 다룰 것입니다.
다음 영상에서는 'Is Valid (유효한가)' 노드에 대해 이야기해 봅시다.
Is Valid (유효한가) 노드와 실행 흐름
Is Valid (유효한가) 노드는 단순히 "무언가가 유효한지" 묻는 역할을 합니다. 만약 유효하다면, 특정 코드를 실행하도록 합니다.
Is Valid 노드의 기본 사용법

- 액터 참조 가져오기: 우리가 만든 레벨에서 **'Small_Sphere'**를 선택하고 레벨 블루프린트로 돌아가 **참조(Reference)**를 만듭니다.
- Is Valid 연결: 이 구체 참조 핀을 당겨 **'Is Valid'**를 검색합니다. 물음표가 있는 이 노드는 실제로 매크로입니다.
- 조건부 실행: 이제 노드는 묻습니다: "이 작은 구체가 유효한가?"
- Is Valid (유효함): 만약 구체가 레벨에 존재하고 생성되었다면, 'Is Valid' 핀에 연결된 코드를 실행합니다. (예: Print String으로 "This sphere exists. (이 구체가 존재합니다.)" 출력)
- Is Not Valid (유효하지 않음): 만약 구체가 존재하지 않거나 파괴되었다면, 'Is Not Valid' 핀에 연결된 코드를 실행합니다.

최적화 및 안정성 (Optimization & Robustness)
이 노드는 게임 개발에서 매우 자주 사용됩니다. 그 이유는 최적화와 코드 안정성 때문입니다.
- 최적화 예시: 멀티플레이어 게임이든 싱글 플레이어 게임이든, 캐릭터가 아직 스폰되지 않았는데 움직임 코드를 실행할 필요가 있을까요?
- 플레이어가 앞으로 이동하기 위해 W 키를 클릭하는 코드가 있을 때, 캐릭터가 스폰되었는지 항상 확인해야 합니다. 캐릭터가 없다면 쓸데없이 움직임 코드를 실행할 필요가 없기 때문입니다.
- 유효성 검사: Is Valid를 사용하여 **"이 작은 구체가 현재 레벨에 있는가?"**를 묻고, 유효할 경우에만 플레이어가 R을 눌러 앞으로 나아가도록 하는 등의 작업을 진행할 수 있습니다.
재시도 루프 구성 (Looping for Validity)
Is Not Valid 경로에 대한 일반적인 처리 방법은 다음과 같습니다:

- 지연 (Delay) 추가: 'Is Not Valid' 핀에 Delay 노드를 연결하고, 예를 들어 0.2초와 같이 짧은 시간을 설정합니다.
- 재검사 루프: Delay 노드의 Completed (완료) 핀을 다시 'Is Valid' 노드의 입력 실행 핀에 연결합니다.
- 결과: 코드는 마치 **반복(Loop)**처럼 작동합니다.
- "캐릭터가 존재하는가?" → "아니오" → 0.2초 지연 → 다시 질문 → "아니오"...
- 이 루프는 플레이어가 캐릭터 선택을 마치고 스폰될 때까지 계속 반복됩니다. 캐릭터가 스폰되면 'Is Valid' 핀이 실행되어 게임 플레이 코드가 시작됩니다.

이것이 바로 Is Valid 노드의 중요한 기능과 사용법입니다. 코드가 유효하지 않은 액체에 대해 불필요하게 실행되는 것을 방지하여 게임을 더욱 안정적이고 효율적으로 만듭니다.
반응형
'Unreal Engine' 카테고리의 다른 글
| Unreal Engine Flip-Flop 노드와 활용 (0) | 2025.10.27 |
|---|---|
| Unreal Engine Sequence (시퀀스) 노드를 이용한 코드 정리 (0) | 2025.10.27 |
| Unreal Engine 배열 함수 (Array Functions)와 활용 (0) | 2025.10.27 |
| Unreal Engine 배열(Arrays)의 개념과 원리 (0) | 2025.10.26 |
| Unreal Engine 배열(Arrays)의 개념 및 원리 (0) | 2025.10.26 |