添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  • 未变动资源 Cook 稳定性的 BUG
  • UE4 Cook 一致性实践
  • FName/FString/FText 的区别
  • UE 模块的加载与启动分析
  • Create A Standalone Application in UE4
  • 打包时路径过长的错误
  • UE 代码分析:GConfig 的加载
  • UE 中 Log 实现代码分析
  • UE 加载和查找 DLL 模块分析
  • 引擎版本获取
  • GC Config of BaseEngine.ini
  • FPaths 中 Dir 函数的对应路径
  • Hook UObject
  • UE4 从 UProperty 到 FProperty
  • 检测是否为安装版引擎的方法
  • UObject 的 FObjectInitializer 构造函数的调用
  • COMPILED_PLATFORM_HEADER
  • FCommandLine 过滤模式
  • Delegate 分析
  • DoesPackageExists 分析
  • UE4 中的 Subsystem
  • UEAsLib 机制初探
  • UE4 技术总结——委托
  • 使用 HTTP 请求下载文件的坑和技巧
  • 资源管理:重塑 UE 的包拆分方案
  • 资源管理:UASSET 资源加密方案
  • UE 插件与工具开发:j2 的设计思路与实现
  • UE 中资源自修正的设计与实现方案
  • 利用 HotPatcher 加速真机资源验证
  • UnrealVersionSelector
  • UE4Launcher
  • ue4program
  • UnrealPak
  • UnrealPakViewer 可视化 Pak 分析工具
  • 抓取 UE4 API 并生成带索引的 Dash 文档
  • UE 工具集:我的开源项目介绍
  • UE 多用户协同编辑服务部署指南
  • 高效调试:命令行参数启动 UE Android App
  • HotPatcher 的模块化改造和开发规划
  • UE 热更新:需求分析与方案设计
  • UE 热更新:UOD 资料
  • UE 热更新:基于 HotPatcher 的自动化流程
  • UE 热更新:拆分基础包
  • UE 热更新:资产管理与审计工具
  • UE 热更新:Create Shader Patch
  • UE 热更新:Questions & Answers
  • UE 内置的 Release/Patch 分析
  • UE 热更新:资源的二进制补丁方案
  • UE 热更新:Shader 更新策略
  • UE 热更新:Config 的重载与应用
  • 虚幻引擎中 Pak 的运行时重组方案
  • ASTC Android Animation Asset Asset Tools AssetRegistry Blueprint Bug Build System BuildGraph BuildSystem C++ Chaos Commandline DASH DDC DS Data Debugging Delegate Details DevOps ES2.0 ES3 EULA Editor Engine EpicVerse FPaths GC GConfig Game Feature Git HTC Vive HotPatcher IDetailCustomization IOS IPA Landscape Launcher Lighting Lightmass Log Timestamp Logging Lua MD5 Mac Manifest Material Memory Metal Mobile Modular Gameplay ModularFeature Module MorphTarget Music NavMesh Navigation Network Niagara ObjectInitializer Oculus Oculus Quest Oodle Optimization PCH PSO Caching Package Pak PixelStreaming Plugins Profiling Programming Protobuf RDG Recast Release Rendering ResScannerUE Script Language Seamless travel Shader Shader Patch ShaderPatcher Slate Source Control Standalone Application Steam SteamSDK String Subsystem Swarm Agent TargetRules Template Texture TexturePacker ThirdParty Tip Tools UBT UClass UE API UE5 UEAsLib UELauncher UEnum UFunction UHT UOD UObject UPL UProperty UStruct UnLua UnityBuild Unreal Insight UnrealFrontEnd UnrealPak VR VS Video VirtualReality VirtualTexture Visual Studio Vive Tracker Wiki Windows Wwise ZSTD codesign dSYM lua target.cs ue4program ushaderbytecode 优化 内存 内存优化 加密 包体优化 压缩算法 反射 图集 大世界 工具 开发环境 开源 异步 打包 插件 构建系统 源码解析 热更新 版本控制 物理系统 特效粒子 编译环境 蓝图 虚幻周报 调试 资源审计 资源管理 跨平台 远程构建 链接库

    默认情况下,UE 默认开启了 bUseUnityBuild ,会把多个 cpp 合并成一个翻译单元进行编译,加快项目的编译速度,编译时有 *_1_of_8.cpp.obj 等 log。所以如果项目的头文件包含不规范,编译时头文件检测可能会出现问题:修改了 A 文件导致 B 文件出现错误。

    所以,想在检测出中这种错误,可以关闭 UnityBuild ,使每个 cpp 都作为单独的翻译单元编译,有两种方法:

  • 对整个工程(包含插件)关闭 bUseUnityBuild ,在项目的 Target.cs 中添加
  • target.cs
    1
    2
    bForceUnityBuild = false;
    bUseUnityBuild = false;

    不修改代码,也可以在 BuildCongiguration.xml 中配置关闭:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    /// <summary>
    /// Whether to unify C++ code into larger files for faster compilation.
    /// </summary>
    [CommandLine("-DisableUnity", Value = "false")]
    [XmlConfigFile(Category = "BuildConfiguration")]
    public bool bUseUnityBuild = true;

    /// <summary>
    /// Whether to force C++ source files to be combined into larger files for faster compilation.
    /// </summary>
    [CommandLine("-ForceUnity")]
    [XmlConfigFile(Category = "BuildConfiguration")]
    public bool bForceUnityBuild = false;
  • 对单个模块关闭 UnityBuild ,在 Build.cs 中关闭
  • 1
    bUseUnity = false;

    可以在 Target.cs 中指定关闭 UnityBuild 的模块,也可以配置在 BuildConfiguration.xml 中:

    1
    2
    3
    4
    5
    /// <summary>
    /// List of modules to disable unity builds for
    /// </summary>
    [XmlConfigFile(Category = "ModuleConfiguration", Name = "DisableUnityBuild")]
    public string[] DisableUnityBuildForModules = null;

    可以在 Intermediate\Build\Win64\UE4Editor\Development\Client 等路径下看到生成的大量 .response 文件。