Created
January 15, 2026 06:20
-
-
Save bluebright/df120329b06fc7b964f9e2839459a73b to your computer and use it in GitHub Desktop.
[Unreal Engine][5.3] 컴포넌트 생성 및 초기화2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| //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