私はpygameにかなり慣れていないので、答えが見つからない最初の切り株にぶつかりました..
テキストをブリットした後、同じ変数の文字列を変更すると、ゲームは元のテキストを新しいテキストに置き換える代わりに、2 つのテキストをオーバーラップさせます..?
最初に古いテキストを消去する必要があります。によって作成されるサーフェスFont.render
は通常のサーフェスです。がブリットされるSurface
と、そのコンテンツは宛先サーフェスの一部になり、宛先サーフェスを操作して、ソース サーフェスからブリットされたものをすべて消去する必要があります。
デスティネーション サーフェスを消去する 1 つの方法は、バックグラウンド サーフェスをその上にブリットすることです。バックグラウンド サーフェスは、テキストやスプライトのようなものがない場合の宛先サーフェスの外観です。もう 1 つの方法は、表面を単色で塗りつぶすことです。
# pygame initialization goes here
screen = pygame.display.get_surface()
font = pygame.font.Font(None, 40)
font_surface = font.render("original", True, pygame.Color("white"));
screen.blit(surface, (0, 0))
screen.fill(pygame.Color("black")) # erases the entire screen surface
font_surface = font.render("edited", True, pygame.Color("white"));
screen.blit(surface, (0, 0))
テキストを上書きすることもできます。
このような:
label = myfont.render("Text", 0, (255,255,0))
screen.blit(label, (100, 100))
if x: //Parameter you check before overwrite
label = myfont.render("Text", 0, BACKGROUND_COLOR)
screen.blit(label, (100, 100))