[Unreal]#7_Spawn Gun Actor in Runtime
Unreal 개발 중 "Gun Actor"에 대해 알아보겠습니다.
"Simple Shooter Game"의 Character Class 개발 과정 중 일부입니다.
SpawnActor()
1. Character 클래스 내부에 "Gun" Actor를 멤버로 선언
// character.h 파일 내부
private:
// 1. 실제 World에 Render할 Gun 객체는 원본 클래스가 아니라, 파생 클래스들입니다.
// eg) Gun Class 의 파생 클래스 : Rifle, Sniper, Launcher...etc
UPROPERTY(EditDefaultsOnly)
TSubclassOf<class AGun> GunClass;
UPROPERTY()
AGun* Gun;
// character.cpp의 BeginPlay() 멤버 메서드 내부
void AShooterCharacter::BeginPlay()
{
//...
Gun = GetWorld()->SpawnActor<AGun>(GunClass);
//...
}
1. TSubclassOf<UClass> CLASS_NAME : UClass 유형의 안정성을 보장해줍니다.
2. SpawnActor<ParentClassType> (Specified Class Type) : World에 새로운 Instance를 생성합니다.
2. TSubclassOf<> 템플릿 클래스
"TSubclassOf<>"는 UPROPERTY 유형의 UClass 생성 후 템플릿 파라미터(<>에 들어갈 Class) 유형의 파생 클래스만 할당하도록 제한합니다.
말 그대로, UPROPERTY()를 통해 Editor에서 직접 특정 클래스를 할당하도록 허용할 때,
우리가 "TSubclassOf <>"로 미리 지정한 "Gun" 클래스의 파생 클래스들만 할당하도록 제한하는 거죠!
* 주의 : :"TSubclassOf <>"를 통해 C++과 Bluprints를 연결하기보단, UPROPERTY의 안정성 보장이 목적
3. SpawnActor()의 템플릿 버전
Gun = GetWorld()->SpawnActor<AGun>(GunClass);
말 그대로, "SpawnActor"는 런타임에 새로운 Actor 인스턴스를 World에 생성합니다.
우리가 사용한 버전은 템플릿 버전으로 특정 클래스 타입을 명시적으로 작성하고, 해당 타입의 "부모 클래스"를 반환하도록 되어 있습니다.
4. Character Blueprint에서 "Gun" 클래스 지정
1. Editor 내부 Character Blueprint에 들어가서 "클래스 디폴트"를 누릅니다.
2. UPROPERTY를 통해 노출한 프로퍼티 설정에서 특정 GunClass의 파생 클래스를 지정합니다.
'게임개발 > Unreal C++' 카테고리의 다른 글
[Unreal]#9-1_Shooting 설계 및 구현 (0) | 2022.08.17 |
---|---|
[Unreal]#8_Attach Gun Actor to Shooter Character (0) | 2022.08.16 |
[Unreal]#6_Gun Actor Setting (0) | 2022.08.11 |
[Unreal]#5_Character의 이동 속도와 각도 구하기, Animation Blueprint (0) | 2022.08.10 |
[Unreal]#4_Animation Blueprint, Gameplay와 Animation 연결하기 (0) | 2022.08.08 |