You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在Unreal Engine项目构建/烘焙时动态定义预处理器宏?

在Unreal Engine构建/烘焙时动态定义预处理器宏的方法

你提到的RunUAT脚本和Project Launcher工具都支持在构建时动态定义预处理器宏,结合Target.cs或Build.cs的逻辑,可以实现完全无需修改源代码的动态宏配置,以下是具体实现方式:

一、通过RunUAT脚本实现动态宏定义

方式1:利用环境变量传递值

修改项目的Target.cs文件,添加读取环境变量的逻辑:

using System;
using UnrealBuildTool;

public class YourProjectTarget : TargetRules
{
    public YourProjectTarget(TargetInfo Target) : base(Target)
    {
        // 读取环境变量,未设置时默认值为0
        string buildTimeVarValue = Environment.GetEnvironmentVariable("MY_BUILDTIME_VAR") ?? "0";
        GlobalDefinitions.Add($"MY_BUILDTIME_VAR={buildTimeVarValue}");
        
        // 其他原有配置...
    }
}

执行RunUAT构建时,先设置环境变量再运行命令:

# Windows系统
set MY_BUILDTIME_VAR=1 && RunUAT BuildCookRun -project=YourProject.uproject -target=YourProject -platform=Win64 -configuration=Development -build

# Linux/macOS系统
export MY_BUILDTIME_VAR=1 && ./RunUAT BuildCookRun -project=YourProject.uproject -target=YourProject -platform=Linux -configuration=Development -build

方式2:直接通过命令行参数传递值

修改Target.cs读取自定义命令行参数:

using System;
using UnrealBuildTool;

public class YourProjectTarget : TargetRules
{
    public YourProjectTarget(TargetInfo Target) : base(Target)
    {
        // 解析自定义命令行参数
        if (CommandLine.Contains("-MyBuildVar="))
        {
            string[] parts = CommandLine.Split(new[] {"-MyBuildVar="}, StringSplitOptions.RemoveEmptyEntries);
            if (parts.Length > 0)
            {
                GlobalDefinitions.Add($"MY_BUILDTIME_VAR={parts[0]}");
            }
        }
        // 未传入参数时设置默认值
        else
        {
            GlobalDefinitions.Add("MY_BUILDTIME_VAR=0");
        }
        
        // 其他原有配置...
    }
}

执行RunUAT时直接携带参数:

RunUAT BuildCookRun -project=YourProject.uproject -target=YourProject -platform=Win64 -configuration=Development -build -MyBuildVar=1

二、通过Project Launcher实现动态宏定义

  1. 打开Unreal Engine编辑器,进入Window > Project Launcher
  2. 创建新配置或编辑现有配置,进入Build阶段
  3. 展开Advanced选项,在Additional Build Arguments中添加参数:
    • 用环境变量方式:-setenv=MY_BUILDTIME_VAR=1
    • 用自定义命令行参数方式:-MyBuildVar=1
  4. 保存配置后执行构建,宏会根据参数自动设置

三、在JetBrains Rider中调试构建时动态设置宏

如果需要在Rider调试时动态修改宏值,可直接在运行配置中设置环境变量:

  1. 打开Run > Edit Configurations
  2. 选择你的UE项目运行配置
  3. 在Environment Variables区域添加:MY_BUILDTIME_VAR=1
  4. 启动调试或构建,宏会自动应用该值

这种方式完全不需要修改源代码中的宏定义,所有配置都通过外部参数或环境变量控制,符合你想要的类似NODE_ENV的灵活切换效果,且不依赖Visual Studio,仅通过Rider和.uproject即可实现。

内容的提问来源于stack exchange,提问作者goose_lake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 02:10:57