我正在使用 Pygame 开发一个小游戏(作为业余爱好)。在此之前,我从未从事过图形界面工作,并且遇到了一些性能问题。即使在选项菜单中,FPS 似乎也被限制在 110 左右,这听起来可能并没有那么糟糕,但考虑到它只是一个带有一些文本的黑屏,FPS 肯定应该更高。这是其中一个文本框的代码:font = pygame.font.SysFont("Comic Sans MS", 180)
color = (0,60,20)
screen.blit(font.render("Title", False, color), (480,0))选项菜单只不过是大约 15 个文本框,这已经导致了 FPS 问题。我渲染或位图传输文本的方式有问题吗?
1 回答
万千封印
TA贡献1891条经验 获得超3个赞
不要pygame.font.Font在每一帧中创建对象,也不要在每一帧中渲染文本。在程序开始时或在类的构造函数 ( )中创建一次文本Surface 。__init__只是每帧中的blit文本Surface:
初始化时:
font = pygame.font.SysFont("Comic Sans MS", 180)
color = (0,60,20)
text_surface = font.render("Title", False, color)
每帧一次:
screen.blit(text_surface, (480,0))
如果文本是动态的,则甚至无法预渲染。然而,最耗时的是创建pygame.font对象。至少,您应该避免在每个框架中创建字体。
在典型的应用程序中,您不需要字体和字体大小的所有排列。您只需要几个不同的font对象。在应用程序开始时创建多种字体,并在渲染文本时使用它们。例如:
fontComic40 = pygame.font.SysFont("Comic Sans MS", 40)
fontComic180 = pygame.font.SysFont("Comic Sans MS", 180)
# [...]
添加回答
举报
0/150
提交
取消