Text 在PyGame中高效处理文本
在PyGame中文本的呈现遇到了许多问题之后,我想知道是否有有效的方法来处理它 第一种方法: 将已呈现的文本存储在类self.variables中:Text 在PyGame中高效处理文本,text,pygame,blit,Text,Pygame,Blit,在PyGame中文本的呈现遇到了许多问题之后,我想知道是否有有效的方法来处理它 第一种方法: 将已呈现的文本存储在类self.variables中: class SomeClass(): def __init__(self): self.text1 = myfont.render("Text 1",0,self.colour) self.text2 = myfont.render("Text 2",0,self.colour) #etc.
class SomeClass():
def __init__(self):
self.text1 = myfont.render("Text 1",0,self.colour)
self.text2 = myfont.render("Text 2",0,self.colour)
#etc.
然后在事件处理中,我只需输入变量:
while running:
screen.blit(SomeClass().text1,(x, y))
注意:myfont是pygame.font.SysFont
结果:帧率从>29降低到约20到22
第二种方法:
只将文本字符串存储在类变量中,并在blitting之前呈现
class SomeClass():
def __init__(self):
self.text1 = "Text 1 string"
self.text2 = "Text 2 string"
然后在光点显示之前渲染:
while running:
#more code
screen.blit(SomeClass().myfont.render(SomeClass().text1,0,SomeClass().colour)
结果:可比的帧率下降
第三种方法:
使用GIMP,将文本写入其中,然后将其存储在PNG中。
结果:FPS无明显变化
所以问题依然存在:有没有办法在PyGame中有效地处理文本,还是让它成为图片总是更好的解决方案?我只是不理解PyGame中文本处理的基本规则吗?我忽略了什么吗
你如何处理游戏中的文本
提前感谢所有的意见和建议
Patric您可以缓存文本渲染。尝试此演示: 只有脏了才会重新渲染。使用属性更改.text或.aa
编辑:您可能对更新的GUI模块感兴趣,了解更多信息。谢谢!这是一个非常有趣的方法。我要试一试。现在想知道其他事情。。。打印命令不是也消耗了很多CPU吗。。。?在我删除打印FPS的命令后,游戏突然运行得更快了。