本站提倡有节制游戏,合理安排游戏时间,注意劳逸结合。

【网站源码资源在线】【park源码解析】【内核分析源码】ue4源码构建失败

2024-11-15 06:08:04 来源:综合 分类:综合

1.UE4 LevelSequence源码剖析(一)
2.UE4源码剖析:MallocBinned(上)
3.UE4 编译报错 MSB3073
4.UE入门笔记(1):编译UE4源码 + apk打包
5.UE源码下载编译+安卓打包配置及部分补充杂症的源码解决
6.UE4学习笔记(1):UE源码下载编译+安卓打包

ue4源码构建失败

UE4 LevelSequence源码剖析(一)

       UE4的LevelSequence源码解析系列将分四部分探讨,本篇聚焦Runtime部分。构建Runtime代码主要位于UnrealEngine\Engine\Source\Runtime\MovieScene目录,失败结构上主要包括Channels、源码Evaluation、构建Sections和Tracks等核心模块。失败网站源码资源在线

       ALevelSequenceActor是源码Runtime的核心,负责逐帧更新,构建它包含UMovieSceneSequence和ULevelSequencePlayer。失败ALevelSequenceActor独立于GameThread更新,源码并且在Actor和ActorComponent更新之前,构建确保其在RuntTickGroup之前执行。失败

       IMovieScenePlaybackClient的源码关键接口用于绑定,编辑器通过IMovieSceneBindingOwnerInterface提供直观的构建蓝图绑定机制。UMovieSceneSequence是失败LevelSequence资源实例,它支持SpawnableObject和PossessableObject,便于控制对象的拥有和分离。

       ULevelSequencePlayer作为播放控制器,由ALevelSequenceActor的Tick更新,具有指定对象在World和Sublevel中的功能,还包含用于时间控制的FMovieSceneTimeController。UMovieSceneTrack作为底层架构,由UMovieSceneSections组成,每个Section封装了Section的帧范围和对应Channel的数据。

       序列的Eval过程涉及EvalTemplate和ExecutionTokens,它们协同工作模拟Track。FMovieSceneEvaluationTemplate定义了Track的park源码解析模拟行为,而ExecutionTokens则是模拟过程中的最小单元。真正的模拟操作在FMovieSceneExecutionTokens的Apply函数中执行,通过BlendingAccumulator进行结果融合。

       自定义UMovieSceneTrack需要定义自己的EvaluationTemplate,这部分将在编辑器拓展部分详细讲解。序列的Runtime部分展示了如何在GameThread中高效管理和模拟场景变化,为后续的解析奠定了基础。

UE4源码剖析:MallocBinned(上)

       近期着手UE4项目开发,对UnrealEngine已久仰慕,终于得此机会深入探索。鉴于项目内存性能问题,决定从内存分配器着手,深入研读UE4源码。虽个人水平有限,尚不能全面理解,但愿借此机会揭开源码神秘面纱,让新手朋友们不再感到陌生。

       UE4内存分配器位于硬件抽象层HAL(Hardware Abstraction Layer)中。具体装箱内存分配器代码位于VS项目目录:UE4/Source/Runtime/Core/Private/HAL/MallocBinned。

       分析从ApplePlatformMemory::BaseAllocator开始,可发现Mac平台的默认分配器为MallocBinned,iOS的默认分配器为MallocAnsi。以下将重点分析MallocBinned。

       一、确定对齐方式

       FScopeLock用于局部线程锁,确保线程同步。内核分析源码关于Alignment的确定,通常使用默认值。默认值取决于内存对齐方式,此处默认对齐为8字节。

       二、确定有足够空间来内存对齐

       代码中,SpareBytesCount用于确认空间足够。若分配内存小于8字节,则按Alignment大小匹配箱体;若大于8字节,则按Size + Alignment - sizeof(FFreeMem)匹配箱体。

       三、确定箱体大小

       根据Size的大小,有三种不同的处理方式。k以下的内存分配采用装箱分配,PoolTable中包含个不同大小的池子。

       四、初始化内存池

       分析内存池初始化过程,主要工作包括:确定内存大小,分配内存块,设置内存池基本信息。

       五、内存装箱

       AllocateBlockFromPool从内存池中分配一个Block,实现内存装箱过程。

UE4 编译报错 MSB

       遇到了编译时出现的错误MSB,代码为6的问题。此错误在编译UE4工程后经常发生。bios设置源码尝试删除“Engine\Intermediate\Build\Win\UE4Editor\Development\VisualStudioDTE”文件,然后重新运行Setup.bat、GenerateProjectFiles.bat,以及在Visual Studio Installer中修改单个组件,查找并选择Unreal Engine安装程序。但在重启电脑后重新编译时,问题依旧存在。

       为解决此问题,建议尝试以下步骤。首先,定位到引擎源码目录下的"Engine\Plugins\Runtime\Steam\SteamVR\Source\SteamVRInputDevice\Private\SteamVRInputDeviceFunctionLibrary.cpp"文件。在代码中找到特定位置,添加#pragma warning(disable:)语句,以避免特定警告影响编译过程。此方法通常能够有效解决编译错误MSB,让工程编译顺利进行。

UE入门笔记(1):编译UE4源码 + apk打包

       实验环境:win / VS专业版 / UE4..

       准备工作①获取UE4源码:按照官方教程,完成邮件确认后即可下载 UE4..2源码。

       记得下载Commit.gitdeps.xml文件,后续会用到。

       ②VS安装工具包:打开Visual Studio Installer,选中并安装

       2、编译

       下面操作均基于UE4源码文件夹

       ①执行bat文件

       a)运行setup.bat,如出现下面错误,则需要替换Commit.gitdeps.xml文件

       b)运行GenerateProjectFiles.bat,如出现下面错误,vuejs源码学习则将文件路径改短

       ②编译

       打开UE4.sln,右键UE4选“生成”,编译过程多分钟

       ③UE4,启动!

       编译完成后,打开Engine\Binaries\Win,找到UE4Editor.exe,即可启动。

       3、安卓环境配置

       下载Android Studio并在UE4部署安卓:参考官方教程以及UE部署到Android以及杂症的解决,配置过程较为复杂,一步步来不要跳步。

       4、打包并测试

       打包过程报错:

       ①packagingresults: error: failed to build "uattempproj.proj"

       解决:打开项目.sln,重新生成AutomationTool

       ②找不到dx文件

       解决:打开C:\Users\Administrator\AppData\Local\Android\Sdk\build-tools,将或版本文件夹中的dx.bat 和 lib 文件夹中的 dx.jar 复制到 .0.0 版本文件夹的对应位置。(build-tools从版本之后把dx的方式去掉了,而UE需要这个,没有的话会发布失败)

       手机测试报错:

       ①No Google Play Store Key

       解决:UE项目设置->Android中勾选“将游戏数据打包至.apk中”,重新打包

       参考链接

       ① UE部署到Android以及杂症的解决

       ② UE4学习笔记(1):UE源码下载编译+安卓打包

       ③ 油管教程《Unreal Engine 4..2 Packaging For Android | Unreal Engine 4..2 Export Android Project》

UE源码下载编译+安卓打包配置及部分补充杂症的解决

       在Windows平台下,UE4..2与VS结合进行源码下载与编译,及安卓打包配置的过程,需要注意以下关键点。

       源码下载遵循官方指引,确保邮箱确认,下载的为压缩包。

       Visual Studio的下载与配置需前往官网获取安装包,确保安装时多选工作负荷,包含桌面应用与移动应用、.NET桌面开发选项。

       运行GenerateProjectFiles.bat时,若遇"未找到框架 .NET Framework Version"问题,应确保安装配置时已勾选.NET桌面开发工作负荷。

       双击Setup.bat与GenerateProjectFiles.bat,等待过程中会下载所需资源,需耐心等待。

       在VS中打开UE4.sln,通过UE4项目生成开始编译源码,编译耗时取决于电脑性能,完成后文件约g。

       编译过程中,遇到“UE4 fatal error C: 编译器限制: 达到内部堆限制”与“error C: 超过了 PCH 的虚拟内存范围”问题,参考相关文章,调整系统性能设置以避免问题。

       编译完成后,UE4Editor.exe可执行文件位于D:\Program\UnrealEngine-4.\UnrealEngine-4.\Engine\Binaries\Win,创建桌面快捷方式便于使用。

       清理中间文件前,建议参考Win 编译安装Unreal Engine 4的方法。在项目根目录创建批处理文件,执行清理操作后文件夹大小约G,接近Epic客户端安装的UE4大小。

       安卓打包配置繁杂,具体步骤可参考官方文档与相关文章。运行SetupAndroid.bat时,若出现错误,检查Java版本是否一致,通过SDK Manager更新或调整版本。

       在虚幻编辑器打包过程中遇到依赖包下载问题,参考Android Studio gradle下载依赖包失败的解决办法,修改build.gradle.ftl文件,使用阿里云国内镜像站点下载依赖,避免网络延迟。

       最后,打包并成功运行于设备,完成UE4部署至安卓环境。注意文中链接包含相关文章与资源,以供深入学习与参考。

UE4学习笔记(1):UE源码下载编译+安卓打包

       注:该笔记以UE4..2在windows平台为例,vs版本为

       1.关联github和Epic账户

       要在github上获取UE4源码需要先关联账户,否则找不到源码,网页

       按照官网提供流程即可完成 GitHub上的虚幻引擎 - Unreal Engine

       记得确认邮件,否则还是(当初就是忘记了,卡了好一会儿)

       2.下载UE4源码

       在 Releases · EpicGames/UnrealEngine (github.com)中选择自己需要的版本(我使用的是4..2),这步很简单,但需要注意的是还需要将Commit.gitdeps.xml文件也一并下载,用于替换同名文件(有些版本则没有这样的文件),不替换的话后续会报错(之后步骤中会提到)

       解压后目录如下:

       3.执行bat文件

       (1)点击运行setup.bat,没有替换Commit.gitdeps.xml文件可能会出现如下问题:

       (2)点击运行GenerateProjectFiles.bat,此过程可能会出现如下问题:

       未找到框架 .NETFramework Version=v4.6.2

       只需要在VS Installer中选中安装就行:

       完成后会生成UE4.sln文件

       4.生成

       VS打开UE4.sln,开始生成:

       但是生成过程中我出现了这样的问题:

       UE4 fatal error C: 编译器限制: 达到内部堆限制

       error C: 超过了 PCH 的虚拟内存范围问题解决

       我出现这样问题的原因是我的C盘空间不够大(分区的时候给的比较少),托管系统设置在C盘,导致无法分配足够的虚拟内存,设置为空间足够的盘即可。

       步骤:电脑->属性->高级系统设置->高级->性能设置->高级->更改

       OK,成功编译完成

       5.安卓打包

       该过程有官方文档,并且比较繁琐,直接给出链接:

       设置虚幻的Android SDK和NDK | 虚幻引擎文档 (unrealengine.com)

       UE部署到Android以及杂症的解决 - 知乎 (zhihu.com)

       我就提一下自己遇到的问题,在UE4中进行安卓打包的时候遇到了这样的问题:

       原因在于SetupAndroid.bat中,SDK Platform的版本选择是,而在UE项目设置->平台 - Android SDK中的SDK API Levle默认选择latest。但是我安装AS的时候默认给我安装了最新的Android API (此时latest指向的是版本),导致冲突。解决方法是UE项目设置中手动设置指定版本,或者在AS中卸载高于版本的Android API。

       OK,打包成功!!!

       6.打开游戏

       但是,是的,还有但是(都最后一步了,还有问题OVO!!!),在手机上下载安装,打开后是这样的:

       原来是因为打包除了生成apk文件还生成了obb,至于Google Play Store Key应该就是一个密钥了。

       解决方法是在UE项目设置->Android中勾选“将游戏数据打包至.apk中”,我们可以看到对这个勾选项的解释:

       行,勾选后重新打包,成功运行:

第5期(1):UE4的奇怪Bug和解决方案汇总()

       在使用UE4编辑器过程中,常遇“GPU has crashed”的崩溃问题。此错误信息在日志中显示,指向“GDynamicRHI->CheckGpuHeartbeat()”返回“False”。当“GDXNVAfterMathEnabled”为“True”时,此函数可能触发崩溃。为避免此情况,将“GDXNVAfterMathEnabled”设置为“False”是解决方案。在UE4引擎源代码中,通过设置“r.DXNVAfterMathEnabled”为“False”即可实现。参考官方文档关闭“AfterMath”功能,解决崩溃问题。具体步骤包括:找到对应版本UE4引擎的“Config”文件夹,打开“ConsoleVariables.ini”文件,在“[Startup]”配置区段添加配置信息,重启UE4编辑器。

UE4项目同时使用Cesium和nDisplay插件打包报错LINK tinyxml2的问题解决

       当在UE4项目中同时使用Cesium和nDisplay插件时,可能会遇到LINK tinyxml2的问题。该错误的根源在于,这两个插件各自使用了不同版本的tinyxml2.lib。

       为解决此问题,我们只需采取一个简单的步骤:将nDisplay插件中的tinyxml2.lib文件复制并替换Cesium插件中的同名文件。在完成4.版本的打包操作后,项目即可正常运行。

       对于UE5.2的情况,解决方案略有不同。首先,需前往GitHub下载与引擎版本匹配的Cesium插件源代码,并将其放置在项目目录的plugins文件夹下。接着,移除市场中下载的Cesium插件,替换项目目录下的tinyxml2.lib文件。完成编译后,项目打包并运行将无误。

       具体操作如下:

       1. 首先,定位并复制引擎目录中nDisplay插件文件夹内的tinyxml2.lib文件。

       2. 接着,找到并替换Cesium插件文件夹内的tinyxml2.lib文件。

       3. 此时,项目将成功打包,问题得以解决。

相关推荐
一周热点