如何解决如何在pygame中渲染/隐藏文本以获得良好的性能
我正在使用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问题。我在渲染或显示文字方面有问题吗?
解决方法
不要在每个框架中创建pygame.font
对象,也不要在每个框架中呈现文本。在程序开始或类的构造函数(__init__
)中创建一次文本 Surface 。在每一帧中仅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)
# [...]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。