You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Unity编辑器游戏窗口帧率限制失效问题咨询(Linux 2017.1.1)

解决Unity编辑器游戏视图帧率限制问题(Linux + 2017.1.1)

针对你在Linux系统下使用Unity 2017.1.1时,无法将游戏视图帧率限制到30的问题,我整理了几个针对性的解决方案,你可以逐一尝试:

  • 确保代码设置在Play模式启动时优先执行
    有时候代码设置的时机不对可能导致不生效,你可以创建一个简单的帧率限制脚本,挂载到场景中一个不会被销毁的对象上,确保Play模式一开始就执行配置:

    using UnityEngine;
    
    public class FrameRateController : MonoBehaviour
    {
        void Start()
        {
            // 先关闭垂直同步
            QualitySettings.vSyncCount = 0;
            // 设置目标帧率
            Application.targetFrameRate = 30;
        }
    }
    

    进入Play模式后,这个脚本会优先执行设置,避免其他逻辑覆盖你的帧率配置。

  • 检查系统层面的垂直同步强制设置
    Linux下的窗口管理器(比如GNOME、KDE的 compositor)或者显卡驱动可能会强制开启垂直同步,这会直接覆盖Unity的设置。你可以:

    • 如果是NVIDIA显卡:打开nvidia-settings,找到“OpenGL Settings”或“X Server Display Configuration”,关闭“Sync to VBlank”选项。
    • 如果是AMD显卡:使用显卡驱动配套的设置工具或者桌面环境的显示设置,关闭垂直同步。
    • 如果是Intel集成显卡:在桌面环境的显示设置中找到垂直同步选项并关闭,或者调整Xorg配置文件禁用该功能。
      关闭系统级垂直同步后,再回到Unity测试帧率是否能降到30。
  • 验证Unity Player Settings的全局配置
    打开Unity的Edit > Project Settings > Player,在“Other Settings”里找到“VSync Count”选项,确认它被设置为Don't Sync(对应数值0)。虽然代码里的设置理论上会覆盖全局配置,但旧版本Unity可能存在优先级冲突,统一设置为关闭可以避免这类问题。

  • 尝试用命令行参数启动Unity
    针对2017.1.1这类旧版本,你可以尝试用命令行参数强制禁用垂直同步并锁定帧率:

    ./Unity -noVSync -force-fps 30
    

    找到你Unity安装目录下的可执行文件,用这个命令启动编辑器后再测试游戏视图的帧率。

如果以上方法都试过还是不行,可能是2017.1.1版本在Linux下的特定兼容性bug,你可以尝试升级到同系列的LTS版本(比如2017.4.x),这类旧版本的问题通常会在后续补丁中修复。

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

火山引擎 最新活动