描述:在编辑器中有一个骨骼网格体,用C++创建骨骼体并加载动画序列,此处只说设置动画序列的两种方式,区别在于如何获取到动画序列的对象。
方式一:采用ConstructorHelpers创建对象,此函数只能在构造函数中调用。
static ConstructorHelpers::FObjectFinder<UAnimSequence> AnimAsset(TEXT("/Game/person/person_Anim.person_Anim"));
if (AnimAsset.Succeeded())
{
// 获取动画系列对象
UAnimSequence* AnimationSequence = AnimAsset.Object;
// 骨骼网格设置动画节点
SkeletalMeshComponent->SetAnimationMode(EAnimationMode::AnimationSingleNode);
// 播放动画
SkeletalMeshComponent->PlayAnimation(AnimationSequence, true); // true for looping
}
方式二:采用LoadObject,此函数可以在构造函数外调用
// 获取动画系列对象
FString AniPath = TEXT("/Game/person/person_Anim.person_Anim"); // 动画路径
UAnimSequence* AnimationSequence = LoadObject<UAnimSequence>(nullptr, *AniPath);
// 骨骼网格设置动画节点
SkeletalMeshComponent->SetAnimationMode(EAnimationMode::AnimationSingleNode);
// 播放动画
SkeletalMeshComponent->PlayAnimation(AnimationSequence, true); // true for looping
- 两种方式的区别在于获取动画序列的方式不同。
- 其他对象,比如静态网格,骨骼网格等都可以用这两种方式获取。