UE4在项目打包时找不到动画类。

问题描述 投票:0回答:1

在播放器类的构造函数中,我使用ConstructorHelpers::FObjectFinder来获取蓝图动画类的链接。

static ConstructorHelpers::FObjectFinder<UAnimBlueprint> finderAnim(TEXT("AnimBlueprint'/Game/MixamoAnimPack/Mixamo_Adam/Anims/MixamoAnimBP_Adam.MixamoAnimBP_Adam'"));

然后我调用SetAnimClass()方法。

if (finderAnim.Succeeded())
    PlayerMesh->SetAnimClass(finderAnim.Object->GetAnimBlueprintGeneratedClass());

在UE4编辑器中一切都正常,但是当我开始打包项目时,出了点问题,我得到了一个错误。

> PackagingResults: Warning: Error: CDO Constructor (Enemy): Failed to find /Game/MixamoAnimPack/Mixamo_Mortimer/Anims/MixamoAnimBP_Mortimer.MixamoAnimBP_Mortimer

有什么办法可以解决这个问题吗? 或者我应该创建一个播放器的蓝图类,然后在那里选择动画?

c++ unreal-engine4
1个回答
1
投票

这里是 在虚幻引擎的论坛上也有类似的问题。

这是建议的解决方案。

在文件名末尾添加"_C",并将文件视为 "U类",这样运行起来会更顺畅。现在它在编辑器和打包的游戏中都能正常运行。

所以你对 finderAnim 会是什么样子。

static ConstructorHelpers::FObjectFinder<UClass> finderAnim(TEXT("AnimBlueprint'/Game/MixamoAnimPack/Mixamo_Adam/Anims/MixamoAnimBP_Adam.MixamoAnimBP_Adam_C'"));

PS:通过JamesG(首席程序员-UE4 AnimationPhysicsAudio团队)的回答,在 这个 线程来更清楚地理解它。


0
投票

另一个可能更强大的解决方案是使用 FClassFinder.

static ConstructorHelpers::FClassFinder<UAnimInstance> finderAnim(TEXT("/Game/MixamoAnimPack/Mixamo_Adam/Anims/MixamoAnimBP_Adam"));

然后,你可以简单地

PlayerMesh->SetAnimClass(finderAnim.Class);
© www.soinside.com 2019 - 2024. All rights reserved.