Programming/UE5

Data Asset에서 Bone Hierarchy으로 bone을 선택 할 수 있게 만들기

Dorasima 2026. 3. 12. 11:16

이렇게 UDataAsset 과 IBoneReferenceSkeletonProvider을 함께 상속 받는다.

 

(detail 패널 같은데서 bone hierachy를 선택할 수 있게 해주는 친구)

https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/Engine/IBoneReferenceSkeletonProvider

 

IBoneReferenceSkeletonProvider | Unreal Engine 5.7 Documentation | Epic Developer Community

Interface for objects to provide skeletons that can be used with [FBoneReference](API\Runtime\Engine\FBoneReference)'s details customization.

dev.epicgames.com

 

#pragma once

#include "CoreMinimal.h"
#include "Engine/DataAsset.h"
#include "Animation/BoneReference.h"
#include "Interfaces/Interface_BoneReferenceSkeletonProvider.h"
#include "CustomizeUnitData.generated.h"

class USkeleton;
class IPropertyHandle;

UCLASS()
class NEUROSYNCHELPER_API UCustomizeUnitData : public UDataAsset, public IBoneReferenceSkeletonProvider
{
	GENERATED_BODY()

public:
	UPROPERTY(EditAnywhere, Category = "CustomizeUnitData")
	FBoneReference TargetBone;

	UFUNCTION(BlueprintPure, Category = "CustomizeUnitData")
	FName GetTargetBoneName() const { return TargetBone.BoneName; }

	virtual USkeleton* GetSkeleton(bool& _bInvalidSkeletonIsError, const class IPropertyHandle* _PropertyHandle) override;
};

 

그리고 

pure vitual인 GetSkeleton을 override 하면?

#include "UI/DataAsset/CustomizeUnitData.h"
#include "Animation/Skeleton.h"

USkeleton* UCustomizeUnitData::GetSkeleton(bool& _bInvalidSkeletonIsError, const IPropertyHandle* _PropertyHandle)
{
	_bInvalidSkeletonIsError = true;

	static const FString MetaHumanSkeletonPath = TEXT("/Game/MetaHumans/Common/Female/Medium/NormalWeight/Body/metahuman_base_skel.metahuman_base_skel");
	return LoadObject<USkeleton>(nullptr, *MetaHumanSkeletonPath);
}

 

(에셋 경로를 적당히 넣으면 된다.)

 

개쩔어...