Skip to content

Instantly share code, notes, and snippets.

@bluebright
Created January 15, 2026 06:20
Show Gist options
  • Select an option

  • Save bluebright/df120329b06fc7b964f9e2839459a73b to your computer and use it in GitHub Desktop.

Select an option

Save bluebright/df120329b06fc7b964f9e2839459a73b to your computer and use it in GitHub Desktop.
[Unreal Engine][5.3] 컴포넌트 생성 및 초기화2
//Character (SkeletalMesh)에 UGroomComponent 생성 예시
/**
* 생성자 내부
*/
MyCharacter::MyCharacter()
{
//캐릭터 메시
USkeletalMeshComponent* CharMesh = GetMesh();
//머리카락
static ConstructorHelpers::FObjectFinder<UGroomAsset> HairGroom1(TEXT("/Game/머리카락.머리카락"));
//바인딩
static ConstructorHelpers::FObjectFinder<UGroomBindingAsset> HairGroomBinding1(TEXT("/Game/머리카락바인딩.머리카락바인딩"));
if (HairGroom1.Succeeded() && HairGroomBinding1.Succeeded())
{
//컴포넌트 생성
//헤더로 변수를 이동한 후, UPROPERTY를 추가하는 방향으로 수정할 것!
UGroomComponent* Hair1 = CreateDefaultSubobject<UGroomComponent>(TEXT("Hair1"));
Hair1->SetupAttachment(CharMesh, TEXT("head"));
Hair1->SetCollisionEnabled(ECollisionEnabled::NoCollision);
Hair1->SetGroomAsset(HairGroom1.Object, HairGroomBinding1.Object);
}
}
/**
* 생성자 외부
*/
void MyCharacter::CreateGroomComponent()
{
USkeletalMeshComponent* MeshComp = GetMesh();
//컴포넌트 생성
//헤더로 변수를 이동한 후, UPROPERTY를 추가하는 방향으로 수정할 것!
UGroomComponent* NewComp = NewObject<UGroomComponent>(this, TEXT("머리카락"));
NewComp->RegisterComponent();
NewComp->AttachToComponent(MeshComp,FAttachmentTransformRules::SnapToTargetIncludingScale, TEXT("head"));
NewComp->SetRelativeTransform(FTransform().Identity);
}
/**
* 비활성화
*/
void MyCharacter::DisableHairGroomComponent(UGroomComponent* Comp)
{
Comp->Deactivate();
Comp->SetVisibility(false, true);
Comp->SetHiddenInGame(true, true);
Comp->SetComponentTickEnabled(false);
Comp->SetGroomAsset(nullptr,nullptr);
}
/**
* 활성화
*/
void MyCharacter::EnableHairGroomComponent(UGroomComponent* Comp, UGroomAsset* GroomAsset, UGroomBindingAsset* BindingAsset)
{
//활성화 및 보이게 하는 설정 부터 먼저 할 것!
Comp->Activate(true);
Comp->SetVisibility(true, true);
Comp->SetHiddenInGame(false, true);
Comp->SetComponentTickEnabled(true);
Comp->SetGroomAsset(GroomAsset,BindingAsset);
// 갱신이 안되면 아래 두 줄을 추가해본다
// Comp->MarkRenderStateDirty();
// Comp->MarkRenderDynamicDataDirty();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment