Mapz's Blog

可以递归的函数指针

UE5:Gauntlet测试向UAT以及游戏中传入命令行参数

在 Gauntlet 测试中我们经常需要往 UAT 或是游戏中传入一些命令行参数,来自定义一些内容,那么如何传参呢

向 UAT 传参

已知 Gauntlet 命令行启动选择 Gauntlet 脚本的使用的是

-test=xxxx.xxxx.xxxx

其中 xxxx.xxxx.xxxx 为 Gauntlet 的测试配置脚本

如果要向里面传参,则在后面加上括号,括号里参数用逗号隔开即可

例如

-test=xxxx.xxxx.xxxx(Arg1=Value1,Arg2)

这样参数就会传递到 UAT 中

那么如何使用呢

在 Gauntlet 脚本工程中,新建一个 Config 类继承 EpicGame.EpicGameTestConfig

例如

1
2
3
4
5
6
7
8
public class TestConfig : EpicGame.EpicGameTestConfig
{
[AutoParam]
public string Arg1;

[AutoParam]
public bool Arg2;
}

然后更新自己的 Gauntlet 配置脚本,并让其使用自定义的 TestConfig

1
2
3
4
5
6
7
8
9
10
11
12
13
public class MyTest : UnrealTestNode<TestConfig>
{
public MyTest(UnrealTestContext inContext) : base(inContext)
{
}

public override TestConfig GetConfiguration()
{
TestConfig config = base.GetConfiguration();
// 中间略,里面可以使用 config.Arg1 等来获取命令行参数
return config;
}
}

这样就可以在 UAT 中使用自定义参数了

向游戏中传参

在 TestConfig 类中重写函数

1
public override void ApplyToConfig(UnrealAppConfig AppConfig, UnrealSessionRole ConfigRole, IEnumerable<UnrealSessionRole> OtherRoles);

然后利用 AppConfig 参数,往游戏中添加命令行参数

例如,如果游戏中需要用到 Arg1,Arg2 那么

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public override void ApplyToConfig(UnrealAppConfig AppConfig, UnrealSessionRole ConfigRole, IEnumerable<UnrealSessionRole> OtherRoles)
{
base.ApplyToConfig(AppConfig, ConfigRole, OtherRoles);

if (!string.IsNullOrEmpty(Arg1))
{
AppConfig.CommandLine += string.Format(" -Arg1=\"{0}\"", Arg1);
}

if (Arg2)
{
AppConfig.CommandLine += string.Format(" -Arg2");
}

}
}

这样就可以往游戏中添加命令行参数啦~