【notepad 源码分析】【网页获取不到源码】【jdk源码查看版本】ue4源码与编译版区别

2024-11-18 15:38:30 来源:闪灵源码 分类:探索

1.UE入门笔记(1):编译UE4源码 + apk打包
2.UE4安装大小
3.UE4 LevelSequence源码解析
4.UE4学习笔记(1):UE源码下载编译+安卓打包
5.UE4 LevelSequence源码剖析(一)
6.《UE4开发笔记》Tip 1 编译完全指南

ue4源码与编译版区别

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

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

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

       记得下载Commit.gitdeps.xml文件,源码后续会用到。编译版区别

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

       2、编译版区别notepad 源码分析编译

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

       ①执行bat文件

       a)运行setup.bat,源码如出现下面错误,编译版区别则需要替换Commit.gitdeps.xml文件

       b)运行GenerateProjectFiles.bat,源码如出现下面错误,编译版区别则将文件路径改短

       ②编译

       打开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》

UE4安装大小

       èµ·ç G以上。

       å› ä¸ºå¼•æ“Žç¼–辑器自身的大小除非,你更多的是要考虑资源和项目的大小。

       å¦‚果单纯考虑引擎,那么UE4会比U3D大。但要看你下的是编译后的编辑器还是源代码形式的编辑器。基本你需要G以上的空间来安装UE4引擎。

       æ²¡æœ‰UDK这种东西了。UDK是UE4的前身。本身并不开源。

UE4 LevelSequence源码解析

       本文旨在总结UE4中LevelSequence工具的学习理解,内容涉及LevelSequence结构、插值数据提取及数据导出实例,同时也提供了一些实用技巧。

       LevelSequence在UE4中分为运行时Runtime和编辑器Editor两部分。Runtime中,主要文件位于/Runtime/MovieScene和/Runtime/MovieSceneTracks文件夹下,包括了LevelSequence资产在关卡中的组成形式和播放设置。在Editor中,文件位于/Editor/Sequencer文件夹下,包含了Sequence的组成部分和通用方法。每个ALevelSequenceActor包含UMovieSceneSequence和ULevelSequencePlayer,前者存储数据,后者负责播放。

       UMovieSceneSequence和ULevelSequencePlayer的结构,展示了Sequence资产与当前场景之间的jdk源码查看版本关系。Sequence数据按Actor组织,每个Actor可以持有多种UMovieSceneTrack,用于记录不同属性,所有Track均继承自UMovieScenePropertyTrack。Track由多个Section组成,Section由UMovieSceneChannel存储关键帧数据。

       LevelSequence的模拟过程由Evaluation实现,现在主要由EntitySystem负责,以支持多线程提高效率,具体解释见文章:Performance at scale: Sequencer in Unreal Engine 4. - Unreal Engine。

       在实际模拟中,关键数据的提取是重点。对于Transform等float类型数据,Sequence编辑器支持以曲线方式灵活调整关键值之间的变化过程。MovieSceneFloatValue结构体用于存储关键帧数据,通过访问该值即可获得对应数据。

       导出数据的实例是将Sequence内属性(如Transform)导出为曲线。首先获取LevelSequence资产,然后获取绑定的Actor。利用获取的Actor,可以进一步获得轨道,并将对应数据存储到曲线中。在线帮助中心 源码

       一些技巧包括:某些特殊Component在Sequence中作为同等层级存在,可通过此方式获取Component的Track;相对位置配置在Instance Data中,可通过变量获取对应数据;实践体验Sequence生成过程,建议通过/Editor/SequencerRecord入手,直观看到生成流程。

       参考文章包括:UE4 LevelSequence源码剖析(一)- 知乎、UE4 LevelSequence源码剖析(二)- 知乎、UE4 LevelSequence源码剖析(三)- 知乎、Performance at scale: Sequencer in Unreal Engine 4. - Unreal Engine。

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,开始生成:

       但是c语言 秒表源码生成过程中我出现了这样的问题:

       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中”,我们可以看到对这个勾选项的解释:

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

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的模拟行为,而ExecutionTokens则是模拟过程中的最小单元。真正的模拟操作在FMovieSceneExecutionTokens的Apply函数中执行,通过BlendingAccumulator进行结果融合。

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

《UE4开发笔记》Tip 1 编译完全指南

       UE4开发笔记:编译指南详解

       在UE4项目中,蓝图编辑简单直观,只需点击编辑器内的编译按钮。然而,C++项目的编译过程则显得更为复杂。本文将聚焦于解决三个常见编译相关问题。

       1. 不同编译选项的区别

       IDE(如VS/Rider)提供了多种编译选项,如Development Editor Win。尽管多数开发人员使用默认设置,但深入理解其他选项至关重要。虽然官方文档可能难以理解,我们通过查阅资料,总结了编译选项的三个组成部分:状态、目标。每个选项背后都有其独特的用途,以满足不同的开发需求。

       2. 热重载与Live Coding的差异

       编辑器的热重载功能允许实时更新蓝图,但C++代码的修改可能会导致蓝图保存后的不一致问题。为解决这一问题,UE4引入了实验性的Live Coding技术,它能确保代码实时编译无误,避免热重载带来的隐藏问题。尽管需要在IDE中重新编译,但Live Coding在效率和稳定性上有所提升。

       3. 如何避免编译引擎源码

       对于使用预编译引擎的开发者,编译源码是一个时间消耗较大的过程。重要的是理解,当使用源码编译的引擎创建项目时,会自动包含引擎工程,导致重复编译。解决方法是修改引擎文件,切换到预编译版本的引擎,避免不必要的编译过程。

UE4:源码编译与编辑器生成项目的区别

       UE4源码编译与编辑器生成项目的区别主要体现在 uproject和sln文件上。

       首先,编辑器生成的项目文件(uproject)会使用版本号来明确关联使用的引擎版本,这种关联方式直观且易于识别。例如,文件名会包含版本号,如"Project_v1.0.0.uproject",这样可以轻松知道项目的引擎对应版本。

       相反,源代码编译的项目文件使用的是全局唯一标识符(GUID),以表示本地引擎的版本。这意味着在不同的PC上,即使使用相同的引擎,生成的uproject文件的GUID也会不同,这是为了区分本地环境的差异。

       其次,sln文件(解决方案文件)之间的差异主要在于其中包含的UE4解决方案的绝对路径。这部分内容是编辑器生成的,而源码编译项目则不会包含这些特定的路径信息,因为它们是由开发人员手动构建的。

       总结来说,编辑器生成的项目文件更侧重于版本管理和引擎关联,而源码编译则更注重项目的自定义和跨平台一致性。两者在结构和内容上有所不同,以满足不同开发阶段的需求。

本文地址:http://8o.net.cn/news/59d161298328.html 欢迎转发