文章

1·UE基础操作

C++项目

  • 编译c++
    • 如果未启动editor应该先构建c++代码,才能启动
    • 如果打开editor修改了c++代码,无需通过IDE构建运行的方式重启eidtor,只需点击editor的recompiles and reloads c++ 按钮即可 alt text
    • 有时大量修改c++代码(比如拷贝过来plugin目录),很容易出现编译失败的问题,需要重新生成
      • 删除红框外的(还有plugin,build打包,.git……你感觉需要的不要删)
      • 右键.uproject重新生成vs
      • 重新编译c++
  • 启动engine editor方式
    • 双击uproject运行,此方式不能在IDE断点调试,就算在editor中双击c++文件打开了IDE也不行
    • 打开IDE,运行启动,可以在IDE断点调试, 但是修改了c++代码,就需要重启editor才能断点

蓝图转c++

  • 新建C++类

项目升级

  • 用目标引擎版本打开原项目,点击open a copy创建副本(避免污染源目录)

    alt text

  • 如果有插件或其他使用模块,应切換对应version branch
  • 删除红框外的(还有plugin,build打包,.git……你感觉需要的不要删)
  • 右键.uproject重新生成
1
2
bOverrideBuildEnvironment = true;
DefaultBuildSettings = BuildSettingsVersion.V5;//以ue5.4为例

展开

  • 修改XXX.Target.cs内容
1
2
DefaultBuildSettings = BuildSettingsVersion.V5;
IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_4;//以ue5.4为例

展开

  • 修改XXXXEditor.Target.cs内容
  • 编译运行
  • 修改打包的配置(特别是Android SDK)
  • 打包
  • 创建新version branch分支提交

注:在升级过程的编译c++,打包的过程中,都会出现大量的error,主要是Engine API的更换,因此要修改代码以适配新的版本

修改项目名称

  • 删除Binaries、Intermediate、Saved、.sln(如果是c++项目)
  • 将以下文件名以及文件内容的原项目名部分修改为新项目名(注意大小写,注意有可能原名非整个单词,只要替换部分)
    • .uproject
    • Source/ 下所有文件
    • Config/ 下所有文件
  • 右键uproject重新生成项目Generate

注:我的做法可能并不正确,在启动后会出现蓝图资产引用丢失的情况,我只进行了手动适配

项目、插件、模块

引擎/项目 由众多模块组成,模块作为组织代码的方式,可启用 / 禁用插件,插件作为可扩展功能

  • project
    • .uproject配置文件
      • 项目版本,名称,描述,类别,模块(名,类型,加载阶段),插件(名,是否启用)
    • .target.cs
      • 默认构建版本,引擎版本,包含模块名
  • plugin:
    • 每个插件以单独的文件夹存放在plugins目录下,插件可以包含一个或多个模块(至少有一个模块),它有很高的独立性和可移植性
    • Edit → Plugins 使用现有template创建plugin
    • 每个模块以单独的文件夹放置在source文件夹下,内部以public,private的规范
    • .uplugin配置文件
      • 插件版本,名称,描述,类别,url,作者,模块(名,类型,加载阶段)
      • 模块类型:运行时,开发时,编辑器……
      • 模块加载阶段:引擎完全加载前配置文件加载后,默认模块加载之前阶段,引擎初始化后
  • modle:
    • .build.cs配置文件
      • 继承ModuleRules
      • PublicIncludePaths,PrivateIncludePaths指定搜索路径,可以不用相对路径直接包含文件,
      • PublicIncludePathModuleNames,PrivateIncludePathModuleNames指定包含模块名称列表,不需要链接
      • PublicDependencyModuleNames,PrivateDependencyModuleNames指定依赖模块名称列表,需要链接
      • PublicLibraryPaths系统/库路径列表
      • PublicAdditionalLibraries附加库列表
      • PublicDelayLoadDLLs延迟加载DLL列表
      • DynamicallyLoadedModuleNames运行时动态加载的模块
      • public依赖当前模块时自动包含,private仅限此模块内部使用
      • nclude,仅允许引用头文件,不能调用对象的方法,Dependency,可以调用函数
    • 继承IYvrXRMRModule
      • StartupModule模块加载时调用
      • ShutdownModule模块卸载时调用

目录结构

alt text

alt text

UE将目录分为2部分:

  • 引擎目录
    • Samples 样例资产:StarterContent
    • Templates 样例工程,比如空白,第三人称,第一人称,VR……
    • FeaturePacks 基础功能包, 包含.upack, 本质是.zip 压缩文件,方便用于不同项目
    • Engine 引擎源码
      • Binaries - 包含可执行文件和构建期间创建的其他文件。
      • Build - 包括构建不同平台的引擎所需的文件
        • Windows .exe
        • Android .apk 或 .aab
        • iOS → 生成 .ipa
        • Mac → 打包为 .app
      • Config - 引擎配置文件,用来控制引擎行为
      • Content - 引擎中资产
      • DerivedDataCache - 包含加载时针对引用内容生成的派生数据文件。引用内容没有相应的缓存文件会导致加载时间显著延长。
      • Intermediate - 包含构建引擎或游戏时生成的临时文件。在游戏目录中,着色器存储在Intermediate目录中。
      • Saved - 包含自动保存、配置(.ini)文件和日志文件。此外,Engine\Saved目录还包含崩溃日志、硬件信息和Swarm选项与数据。
      • Source - 包含引擎或游戏的所有源文件,包括引擎源代码、工具和游戏类等。
        • Developer - 编辑器和引擎共同使用的文件。
        • Editor - 仅供编辑器使用的文件。
        • Programs - 引擎或编辑器使用的外部工具。
        • Runtime - 仅供引擎使用的文件。
  • 游戏目录
    • ……
本文由作者按照 CC BY 4.0 进行授权
本页总访问量