在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.
然后在事件处理中,我只是blit变量:
while running:
screen.blit(SomeClass().text1,(x, y))
注意:myfont是pygame.font.SysFont(...)
结果:帧率从> 29(限制为30)下降到大约20到22。
第二种方法:
将文本字符串存储在类变量中并在blitting之前进行渲染。
class SomeClass():
def __init__(self):
self.text1 = "Text 1 string"
self.text2 = "Text 2 string"
然后在blitting之前渲染:
while running:
#more code
screen.blit(SomeClass().myfont.render(SomeClass().text1,0,SomeClass().colour)
结果:帧速率可比较下降
第三种方法:
使用GIMP,在那里写文本,然后将其存储在PNG中。 结果:FPS无明显变化
所以问题仍然存在:有没有办法有效地处理PyGame中的文本,或者它总是更好的解决方案来制作图片?我是否只是不理解PyGame中文本处理的基本规则?我忽视了什么吗?
你如何处理Py-Games中的文本?
提前感谢所有意见和建议;)
帕特里克
答案 0 :(得分:0)
您可以缓存文本渲染。试试这个演示:Render anti-aliased text on transparent surface in pygame
如果脏的话,它只会重新渲染。 (使用属性更改.text
或.aa
)。
编辑:您可能对更新的GUI模块http://program.sambull.org/sgc/感兴趣了。