我正在使用 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 問題。我渲染或位圖傳輸文本的方式有問題嗎?
1 回答

萬千封印
TA貢獻1891條經驗 獲得超3個贊
不要pygame.font.Font在每一幀中創建對象,也不要在每一幀中渲染文本。在程序開始時或在類的構造函數 ( )中創建一次文本Surface 。__init__只是每幀中的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)
# [...]
添加回答
舉報
0/150
提交
取消