如何解除Ursina游戏引擎的60FPS帧率限制?
解决Ursina游戏帧率被限制在60FPS的问题
问题分析
你关闭了vsync和开发模式,但用pygame Clock手动驱动循环时,帧率始终无法超过60FPS——核心原因是Ursina底层基于Pyglet,自带完整的主循环机制,混用pygame Clock会导致逻辑冲突,且Ursina默认的帧率控制逻辑未被正确覆盖。另外,部分显卡驱动会强制开启垂直同步,即使代码中关闭vsync,也可能被驱动层面的设置覆盖。
解决方案
1. 弃用pygame Clock,改用Ursina原生帧率控制
Ursina自带帧率管理功能,无需借助第三方库。修改代码如下:
from ursina import * if __name__ == '__main__': # 初始化时关闭vsync、开发模式 app = Ursina(development_mode=False, vsync=False) # 设置目标帧率 application.fps_limit = 120 # 开启内置帧率计数器,方便实时调试 window.fps_counter.enabled = True window.fullscreen = True box = Entity(model='cube', collider='box', position=(5,0,10), scale=6, rotation=(80,0,0)) # 使用Ursina原生主循环启动程序 app.run()
2. 检查显卡驱动设置
- NVIDIA用户:打开NVIDIA控制面板 → 管理3D设置 → 垂直同步 → 设为「关」
- AMD用户:打开Radeon软件 → 显示 → 垂直同步 → 设为「关」
- Intel核显用户:打开英特尔显卡控制中心 → 显示 → 垂直同步 → 设为「关」
3. 验证效果
运行修改后的代码,查看窗口左上角的帧率计数器,确认是否达到目标帧率(120FPS)。
原代码问题说明
手动编写的while True循环会绕过Ursina的原生主循环逻辑,pygame Clock的tick()方法在非vsync模式下,仍可能受系统或显卡的隐性帧率限制。改用Ursina的app.run()能让引擎正确处理帧率调度,避免第三方库与引擎核心逻辑的冲突。
内容的提问来源于stack exchange,提问作者bagel
相关产品推荐
相关产品推荐

