找回密码
 立即注册
搜索

UE引擎开发的各种坑合集(持续更新)

2024-11-20 15:52| 发布者: admin| 查看: 70| 评论: 0|来自: 知乎

摘要: 本文罗列一些本人在UE引擎开发过程遇到的各种坑。开发过程中有些小坑本来很简单就能避免,但如果不知道的话也可能被卡个几小时甚至一天,甚是影响心情,希望能帮助到各位难兄难弟~~先开个头,后面持续更新~1 关闭变 ...
 本文罗列一些本人在UE引擎开发过程遇到的各种坑。

开发过程中有些小坑本来很简单就能避免,但如果不知道的话也可能被卡个几小时甚至一天,甚是影响心情,希望能帮助到各位难兄难弟~~

先开个头,后面持续更新~

1 关闭变量优化,以便调试过程中能看到变量信息

之前不了解的时候网上搜了各种办法,绕来绕去还是解决不了这个问题,但其实方法很简单,只需要所调试模块的 XX.Build.cs文件,加入一行 OptimizeCode = CodeOptimization.Never;即可。

2 各种头文件找不到,链接失败等等错误

1)error LNK2019: 无法解析的外部符号 XX函数 YY中引用了该符号,链接失败类似下图

咱们一定要看明白了,如图上是说SAssetEditorViewport::BindCommands(void)这个外部符号无法连接,那我们就找找对应模块,发现对应BindCommands函数并没有导出,直接给对应类或者接口加一个 大写模块名_API 即可解决问题

上面是我专门删除了源码部分函数导出所以出现了问题

此处一定要注意,UNREALED_API要写在class后面,不然修饰位置是无效的!!

该问题最近又遇到一种情况

比如使用FBuiltinEditorModes::EM_Landscape ,此时发现自己Landscape相关的模块都引入了,但是还是会报错error LNK2019无法解析 FBuiltinEditorModes::EM_Landscape ,这是因为FBuiltinEditorModes::EM_Landscape 对应的库是EditorFramework,引入后问题即解决。

所以在遇到这类错误时还是得专门定位下链接不了的文件具体在哪个Module,而不要靠臆想。

2)找不到头文件,导出宏也加上了,明明头文件就在但还是找不到,类似错误如

检查模块对应的XX.Build.cs文件中如下图两个位置是否添加了对应模块的模块名,需要注意Public和Private是分别对应的。

3 LoadObject<xx>(..) 的时候明明资产是存在的,但是就是load failed

这个问题检查3个地方:

1)确认你所设置的路径是对的;

2)如果是插件中,确认你的插件XX.uplugin中开启了CanContainContent;

3)资产本身是不是有错误,有时候我们升级了引擎版本会导致资产出错,那么也就无法load了,需要先将资产中的错误解决。

4 Failed to download 'http://cdn.unrealengine.com/dependencies/xxx': 远程服务器返回错误: (403) 已禁止

这个错误一般出现在老版本UE的情况,网上也是各种方法遍地开花,但其实UE官网给出了解决办法:Upcoming Disruption of Service Impacting Unreal Engine Users on GitHub - General / Announcements - Epic Developer Community Forums

只需要在Releases · EpicGames/UnrealEngine (github.com)中下载对应引擎版本的Commit.gitdeps.xml覆盖本地相同文件即可解决~


5 error C4668: 没有将“_WIN32_WINNT_WIN10_TH2”定义为预处理器宏,用“0”替换“#if/#elif”

一般为Windows中的宏和UE冲突所致,需要用如下头文件包裹冲突的头文件:

#include "Windows/AllowWindowsPlatformTypes.h" 
#include "Windows/PreWindowsApi.h"
#include "冲突的头文件"
#include "Windows/PostWindowsApi.h"
#include "Windows/HideWindowsPlatformTypes.h"

6 出现error C4183: 'SLATE_END_ARGS': missing return type; assumed to be a member function returning 'int’

检查"Slate", "SlateCore",

并且记得#include "SlateBasics.h”


7 fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

搜索失败的obj,直接删除


8 开启GPU debug

r.ShaderDevelopmentMode=1
r.Shaders.Optimize=0
r.Shaders.Symbols=1
r.Shaders.SkipCompression=1
r.Shaders.KeepDebugInfo=1





不少趟过的坑都忘了记录,后面我会逐渐进行补充,各位大佬们如果有遇到各种坑也欢迎一起同步到这里~~


路过

雷人

握手

鲜花

鸡蛋

QQ|Archiver|手机版|小黑屋|软件开发编程门户 ( 陇ICP备2024013992号-1|甘公网安备62090002000130号 )

GMT+8, 2024-11-21 14:24 , Processed in 0.028594 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

返回顶部