🎮Unreal4/C++

[UE4] Actor 스폰하기 (TSubclassOf<>, GetWorld(), SpawnActor<>())

공대 컴린이 2023. 2. 27. 18:29
728x90

🔶 TSubclassOf

Cube Mesh를 상속받아 Cone과 Sphere 모양의 Mesh 클래스도 만들었다. 이후 해당 Mesh 클래스들을 모두 자손 블루프린트로 생성하여 3개의 서로 다른 모양을 갖는 클래스를 Spawn시키는 Spawner를 생성하였다.

 

이때 Spawner 클래스에서 Spawn 시킬 클래스를 담는 SpawnClasses 배열 변수를 선언하였는데, 이때 사용한 TSubclassOf는 특정 클래스 이하의 클래스들만 범위로 나타내기 위함이다.

 

TSubclassOf를 사용하지 않고 UClass를 그대로 직렬화하여 나타내면 블루프린트에서 모든 UClass가 출력된다.

 

그러나 이렇게 모든 클래스가 나타나면 사용할 클래스를 선택하기 쉽지도 않고, 협업할 때에 상대방을 위해 C02_Mesh 클래스 이하로만 목록이 나타날 수 있도록 제한해주는 것이 좋다. 따라서 TSubclassOf 명령어를 사용한다.

🔶 SpawnActor

.cpp 파일에서는 배열의 크기(3) 만큼 for문을 돌리면서 SpawnClasses에 할당된 액터를 Spawn 시킨다.

 

이때 사용되는 FVector과 FTransform 변수는 블루프린트에서 Spawn Actor 함수를 사용할 때 보이는 Spawn Transform 속성을 초기화하기 위해 필요하다.

 

SpawnActor는 좀 특별한 함수인데, 타깃이 나오지 않는 함수이다. 저번 시간에 공부했듯이 타깃이 나오지 않는다면 전역함수일 수 있고, 그게 아니라면 World에 존재하는 함수인 경우이다. Spawn Actor는 액터를 World에 배치하므로 World 함수이다.

따라서 AActor 클래스의 Get World() 함수로  UWorld* 포인터형 변수를 반환받아 Spawn Actor 함수를 호출하면 액터가 스폰된다.

 

프로그램 실행 결과, BP_Spawner 액터를 기준으로 오른쪽으로 세가지 Mesh 모양이 다른 액터가 Spawn 되는것을 확인할 수 있었다.

728x90