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

能否控制Unity命令行运行Play Mode单元测试时的分辨率?

解决Unity命令行运行PlayMode测试时固定分辨率的问题

你可以通过两种方式修改测试时的分辨率,满足不同场景的测试需求:

1. 命令行参数直接指定分辨率

Unity命令行支持通过-screen-width和-screen-height参数强制设置运行分辨率,把这两个参数加到你的现有指令里就行。比如要以1920×1080分辨率运行测试:

Unity.exe -runTests -batchmode -projectPath ~/path -testPlatform PlayMode -screen-width 1920 -screen-height 1080

这种方式适合在CI/CD流程里批量跑单一分辨率的测试,如果需要覆盖多种分辨率,只需要多次调用不同参数的命令即可。

2. 在测试代码中动态切换分辨率

如果想在一套测试里验证多种分辨率下的功能,直接在测试代码里用Screen.SetResolution()动态设置更灵活。示例代码如下:

using NUnit.Framework;
using UnityEngine;

public class ResolutionValidationTests
{
    // 保存原始分辨率,测试后恢复
    private Resolution _originalRes;

    [SetUp]
    public void SaveOriginalResolution()
    {
        _originalRes = Screen.currentResolution;
    }

    [Test]
    public void TestFunctionalityAt1080p()
    {
        // 设置1080p分辨率
        Screen.SetResolution(1920, 1080, FullScreenMode.Windowed);
        
        // 验证分辨率是否生效
        Assert.AreEqual(1920, Screen.width);
        Assert.AreEqual(1080, Screen.height);

        // 在这里编写对应分辨率下的功能测试逻辑
        // 比如UI布局适配、相机视野验证等
    }

    [Test]
    public void TestFunctionalityAt720p()
    {
        Screen.SetResolution(1280, 720, FullScreenMode.Windowed);
        Assert.AreEqual(1280, Screen.width);
        Assert.AreEqual(720, Screen.height);

        // 720p分辨率下的功能测试
    }

    [TearDown]
    public void RestoreOriginalResolution()
    {
        // 恢复到测试前的分辨率,避免影响后续测试
        Screen.SetResolution(_originalRes.width, _originalRes.height, _originalRes.fullScreenMode);
    }
}

这种方法允许你在同一个测试套件里覆盖多种分辨率场景,不需要多次启动Unity,效率更高。

注意:PlayMode测试中Screen.SetResolution()是完全生效的,但如果你的测试涉及到异步加载或画面渲染,可能需要用[UnityTest]配合协程等待帧刷新后再验证结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 12:03:10