1

在遇到 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。

第二种方法:

仅将文本字符串存储在类变量中并在传输之前渲染。

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 中的文本?

提前感谢所有意见和建议;)

帕特里克

4

1 回答 1

0

您可以缓存文本渲染。试试这个演示:在 pygame 中的透明表面上渲染抗锯齿文本

只有脏了才会重新渲染。(更改.text.aa)通过使用属性。

编辑:您可能对更新的 GUI 模块http://program.sambull.org/sgc/感兴趣。

于 2013-05-28T14:39:31.580 回答