2013-05-28 63 views
1

在遇到PyGame中文本渲染的許多問題後,我想知道是否有任何有效的方法來處理它。在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" 

,然後就在位塊傳輸之前渲染:

while running: 
    #more code 
    screen.blit(SomeClass().myfont.render(SomeClass().text1,0,SomeClass().colour) 

結果:幀率的可比下降

第三種方法:

使用GIMP,寫作文那裏,然後將其存儲在PNG中。 結果:FPS沒有明顯的變化

所以問題依然存在:有沒有什麼方法可以有效地處理PyGame中的文本,或者它總是更好的解決方案,使它的圖片?我只是不明白PyGame中的文本處理的基本規則嗎?我忽略了什麼?

你如何處理Py遊戲中的文本?

預先感謝所有的意見和建議;)

帕特里克

回答

0

可以緩存文本渲染。試試這個演示:Render anti-aliased text on transparent surface in pygame

它只會重新呈現,如果髒。 (通過使用屬性更改.text.aa)。

編輯:您可能對更新的GUI模塊http://program.sambull.org/sgc/感興趣。

+0

謝謝!這是一個非常有趣的方法。我會給它一個鏡頭。 –

+0

現在想知道其他的東西......「打印」命令不會消耗太多的CPU ......?在我刪除了打印FPS的命令後,遊戲突然加快了速度。 –