1、APawn对象旋转控制不能直接用SetActorRotation,而应该用
APlayerController* PlayerController = UGameplayStatics::GetPlayerController(this, 0);
if (PlayerController)
{
PlayerController->SetControlRotation(CurRot);
}
否则APlayerController有时会重新将APwan的旋转角度再调整回来
2、编译出现链接错误
1>D:/UnrealEngine427/......: error C4273: “?????:?????”: dll 链接不一致
1>D:\UnrealEngine427\......: note: 参见“{ctor}”的前一个定义
可能是因为Module的导出宏出错,需要检查导出宏是否为本Module
3、Module引用错误
如果一个B Module引用了另一个A Module中的类,在头文件中#include AAA.h
AAA.h为另一个A Module的头文件,BModule编译链接一般没有问题,但是如果C Module引用B Module一般会出现AAA.generate.h找不到的错误,主要原因是C不会去找A的UBT路径
解决办法是不要在采用前置声明,然后在cpp文件中#include相应的头文件,因此在CModule中引用B Module的类作为成员变量应该定义为指针类型,而非直接定位为对象或结构体。
3、使用模板类跨Module调用,链接出现 error LNK2019: 无法解析的外部符号
原因在于模板类和模板函数在使用的时候才会被实例化。当模板被使用时,编译器需要函数所有的实现代码,来用合适的类型(模板参数)去构建正确的函数。但是如果将函数实现在单独的源文件中,这些文件是不可见的,因而会出错。
解决方案:
1、把类模板中成员函数的声明和定义都放在类的定义中(.h文件),不要分开就行。
2、在主文件(main文件)中既包含类模板的声明文件(接口文件)(.h文件),同时也包含类模板的实现文件(.cpp文件)就行了。
3、在类的定义中(.h文件)的最后包含类模板的实现文件(.cpp文件)。
: