[Unreal] 월드 안에 이름을 포함한 액터 모두 찾기
인트로
언리얼에서는 월드 안에서 원하는 타입의 오브젝트, 액터를 찾을 수 있는 기법을 제공한다. Iterator를 활용하는 방법과 GetAllActorsOfClass를 활용하는 방법이 있는데 GetAllActorsOfClass를 이용하여 찾는 방법을 소개하겠다.
아래 예제에서 이 기법을 활용할 상황은 월드 안의 여러 개의 몬스터 스폰 지점을 따로 지정하지 않고 한번에 관리하기 위해 스폰 지점을 다 찾는 상황에서 GetAllActorsOfClass를 활용할 것이다.
GetAllActorsOfClass
맵 곳곳에 배치된 적 스폰지점 BP_EnemySpawnPoint 5개를 찾아서 EnemyManager에 자동으로 등록해 줄 것이다. 이렇게 하면 일일이 등록해야 하는 번거로운 작업이 줄어들어 편의성이 높아진다.
EnemyManager 블루프린트로 들어와 FindSpawnPoints 함수를 생성하고 GetAllActorsOfClass 노드를 추가하여 연결해준다. Actor Class는 Actor로 설정하여 모든 Actor를 찾기로 한다. 다음으로 For Loop 문을 추가하여 찾은 모든 액터들에 대해 검사하도록 한다.
For Loop 문에 아래와 같이 노드를 연결해준다. [Get Display Name] 노드로 현재 레벨에 보이는 이름에서 검색을 하도록 하고 [Contains] 노드를 연결해 'BP_EnemySpawnPoint'를 포함한 액터가 있는지를 부울값으로 반환하게 된다.
만약 위의 이름을 포함하는 액터가 있으면 그 액터를 Spawn Points 배열에 추가한다.