KoreanFoodie's Study

언리얼 액터 생성 및 애셋 로드 (Unreal Actor Spawn and Asset Load) 본문

Game Dev/Unreal C++ : Study

언리얼 액터 생성 및 애셋 로드 (Unreal Actor Spawn and Asset Load)

GoldGiver 2022. 3. 30. 16:23

언리얼 액터 생성 예시

참고로 액터 생성시에는 ConstructorHelpers 를 많이 사용한다.

AWeapon::AWeapon()

{

    // Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.

    PrimaryActorTick.bCanEverTick = true;

 

    Weapon = CreateDefaultSubobject<USkeletalMeshComponent>(TEXT("WeaponHashValue"));

    RootComponent = Weapon;

 

    static ConstructorHelpers::FObjectFinder<USkeletalMesh> SK_BlackKnight(TEXT("SkeletalMesh'/Game/InfinityBladeWeapons/Weapons/Blade/Swords/Blade_BlackKnight/SK_Blade_BlackKnight.SK_Blade_BlackKnight'"));

    Weapon->SetSkeletalMesh(SK_BlackKnight.Object);

}

ConstructorHelpers 는 말 그대로 생성자에서만 사용이 가능하다. 만일 런타임에서 애셋을 로딩할 때는 StaticLoadObject 같은 API 를 활용해야 한다. 해당 애셋을 변경할 가능성이 없고, 여러 곳에서 사용할 예정이라면, ConstructorHelpers 를 이용해 애셋을 가져온 후 static 을 붙여 주자.

 

 

ConstructorHelpers

ConstructorHelpers 는 ObjectFinder 와 ClassFinder 로 나뉘어진다.

ObjectFinder 는 애셋 그 자체를 가져오는 경우, ClassFinder 는 블루프린트 등의 클래스 타입을 가져오는 경우에 사용하면 된다.

언리얼 오브젝트가 UClass 와 CDO 로 나뉜다는 것을 기억하면 이해가 쉬울 것이다!

Comments