在 pygame 中为视觉小说制作多行实时文本渲染器

问题描述

我一直在尝试制作一个使用 pygame 实时渲染的多行文本渲染器。我基本上已经成功制作了一个,但是我制作的文本渲染器必须始终有 3 行文本,否则它不会渲染。

我想要做的是拥有一个文本渲染器,它可以渲染输入到其中的尽可能多的行,然后实时渲染这些行。

此外,如果可能的话,我还希望渲染器根据图像的最大尺寸分割线。即,视觉小说的文本框

函数将用作视觉小说的文本渲染器以使其清晰

旧文本渲染器

def textRendererOld(string,char):
        text1,text2,text3 = string.split('\n',3)
        blit1,blit2,blit3 = "","",""
    
        # remember to add a confirm token so that the text renders consecutively from text1 to text3
    
        for i in range(len(text1)):
            blit1 += text1[i]
            textSurface = charFonts[char].render(blit1,True,WHITE)
    
            disPLAY.blit(textSurface,(TEXT_X_POS,TEXT_Y_POS))
            pygame.display.update()
            pygame.time.wait(TEXT_RENDER_SPEED)
    
        for i in range(len(text2)):
            blit2 += text2[i]
            textSurface = charFonts[char].render(blit2,TEXT_Y_POS + ParaGRAPH_BREAK_GAP))
            pygame.display.update()
            pygame.time.wait(TEXT_RENDER_SPEED)
    
        for i in range(len(text3)):
            blit3 += text3[i]
            textSurface = charFonts[char].render(blit3,TEXT_Y_POS + ParaGRAPH_BREAK_GAP * 2))
            pygame.display.update()
            pygame.time.wait(TEXT_RENDER_SPEED)

我尝试使用多行文本编辑器

def textRenderer(dialogue,character):

    textLines = []
    talkText = dialogue.split('\n',-1)
    textLines.append(talkText)



 for line in len(textLines):
        text = ''
        ParagraphBreak = 0
        for i in range(len(textLines)):
            text += textLines[line]
            textSurface = charFonts[character].render(text,WHITE)

            disPLAY.blit(textSurface,TEXT_Y_POS))
            pygame.display.update()
            pygame.time.wait(TEXT_RENDER_SPEED)

            ParagraphBreak = ParagraphBreak + ParaGRAPH_BREAK_GAP

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)