您如何使用 Pygame 将设计分辨率缩放到其他分辨率?

Mat*_*hew 7 python pygame game-engine

所以在我见过的每一个 Pygame 例子中,似乎都有一个游戏被设计用来玩的分辨率,就是这样。没有设置更高或更低分辨率的选项。如果您确实通过 display.set_mode 更改了分辨率,那么游戏纹理/图形的比例就会失控,游戏将变得无法播放。

在我看到的所有示例中,看起来您实际上必须为每个目标分辨率创建不同大小的纹理集……这看起来很荒谬。这引出了我的问题。

如果我根据 480x270 的标准分辨率设计游戏,是否可以简单地将该表面的输出缩放到 1080p(或 1440p、4k 等),同时仍然使用为 480x270 构建的游戏资产?如果是这样,任何人都可以发布一个如何实现的示例吗?任何提示或指示也将不胜感激。

obj*_*ect 5

您可以按照设计分辨率制作一个虚拟表面,并将其缩放到游戏运行时的分辨率:

window = pygame.set_mode([user_x, user_y])
w = pygame.Surface([design_x, design_y])

def draw():
    frame = pygame.transform.scale(w, (user_x, user_y))
    window.blit(frame, frame.get_rect())
    pygame.display.flip()
Run Code Online (Sandbox Code Playgroud)

在虚拟表面上绘制所有内容,它将缩放到屏幕上。这需要固定的屏幕高度与屏幕宽度比率。