1. 개요

캐릭터가 들고있는 총에 대한 코드를 이전 포스트에서 구현했다.

이제 게임이 시작되는 순간에 해당 총(Rifle 액터)을 캐릭터 액터인 BP_ShooterCharacter에 소환되도록 설정한다.

 

2. 액터 스포닝

(1) ShooterCharacter.h

class AGun;

UCLASS()
class SIMPLESHOOTER_API AShooterCharacter : public ACharacter
{
	GENERATED_BODY()
    //~~~~~~~~~~~~~
    
private:
	UPROPERTY(EditDefaultsOnly) // AGun 클래스의 서브클래스만 선택할 수 있도록 함.
	TSubclassOf<AGun> GunClass;

	UPROPERTY()
	AGun* Gun;
 };

액터를 소환하기 위해서는 해당 액터를 저장할 멤버 변수와 소환할 액터의 클래스가 필요하다.

여기에서 소환할 액터의 클래스를 TSubclassOf<AGun> 으로 지정하면, 블루프린트의 디테일 창에서 AGun의 서브 클래스만 선택하도록 할 수 있다.

 

(2) ShooterCharacter.cpp

void AShooterCharacter::BeginPlay()
{
	Super::BeginPlay();
	
	// 블루프린트 자손 소환
	Gun = GetWorld()->SpawnActor<AGun>(GunClass);
}

 

(3) 언리얼 에디터

이제 컴파일하고 BP_ShooterCharacter에 들어가서 디테일 창을 확인하면 AGun의 클래스를 선택할 수 있다.

이제 게임을 실행하면 월드에 총이 소환된 것을 확인할 수 있다.