我想通过 C++ 来玩我的
UAnimMontage
,特别是想利用 UPlayMontageCallbackProxy
的便利。
理论上看起来,我可以使用
UPlayMontageCallbackProxy::CreateProxyObjectForPlayMontage
,但每当我使用它时,我都会遇到链接器错误:
0>YCharacterVaulting.cpp.obj: Error LNK2019 : unresolved external symbol "public: void __cdecl UPlayMontageCallbackProxy::PlayMontage(class USkeletalMeshComponent *,class UAnimMontage *,float,float,class FName)" (?PlayMontage@UPlayMontageCallbackProxy@@QEAAXPEAVUSkeletalMeshComponent@@PEAVUAnimMontage@@MMVFName@@@Z) referenced in function "public: void __cdecl UYCharacterVaulting::Traverse(void)" (?Traverse@UYCharacterVaulting@@QEAAXXZ)
我已经更新了我的
Build.cs
,以便包含该模块:
PrivateDependencyModuleNames.AddRange(new string[] {"AnimGraphRuntime", "MotionWarping"});
关于如何修复链接器错误有什么想法吗?谢谢!
您出现链接错误是因为引擎开发人员选择不导出 UPlayMontageCallback 类(或者这是一个疏忽)。 如果我们比较一下头文件中的声明:
class UPlayMontageCallbackProxy : public UObject
...导出到同一模块中的另一个类:
class ANIMGRAPHRUNTIME_API UAnimExecutionContextLibrary : public UBlueprintFunctionLibrary
...您会注意到 ANIMGRAPHRUNTIME_API 宏正在导出该类。