You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pygame如何仅在特定函数运行时降帧实现打字效果且不影响其他动画

实现方案

核心逻辑是给TextPrint类增加独立的时间控制逻辑,不依赖全局帧率控制打字速度,全局帧率保持原有值即可,不会影响其他动画效果。

修改步骤

  1. 在初始化方法中新增两个属性:
  • type_interval:每输出一个字符的间隔时间,单位为毫秒,可根据需求自定义
  • last_update_tick:记录上一次更新字符索引的时间戳
  1. 重写update方法,只有当前时间与上一次更新时间的差值超过设定的间隔时,才更新字符索引,避免每帧都新增字符。

修改后完整代码

import pygame
# 模拟逐字符在屏幕上输出文本
class TextPrint:
    def __init__(self, xpos, ypos, fontSize, fontColor, string, gameSurface, type_interval=100):
        self.xpos = xpos
        self.ypos = ypos
        self.font = pygame.font.SysFont('Lucida Console', fontSize)
        self.fontColor = fontColor
        self.displayText = string
        self.active = False # 文本区域是否正在输出内容
        self.activeIndex = 0 # 当前渲染到的字符索引
        self.gameSurface = gameSurface
        # 新增独立时间控制属性
        self.type_interval = type_interval # 每个字符输出间隔,默认100ms
        self.last_update_tick = 0 # 上一次更新字符的时间戳
    
    def update(self):
        # 未激活或者已经输出完成直接返回
        if not self.active or self.activeIndex >= len(self.displayText):
            return
        current_tick = pygame.time.get_ticks()
        # 只有时间差超过设定间隔才更新字符
        if current_tick - self.last_update_tick >= self.type_interval:
            self.activeIndex += 1
            self.last_update_tick = current_tick
            # 索引更新时再渲染文本,避免重复渲染浪费性能
            self.surf = self.font.render(self.displayText[:self.activeIndex], True, self.fontColor)
            self.rect = self.surf.get_rect(x=self.xpos,y=self.ypos)
        # 输出完成后自动标记为非激活
        if self.activeIndex >= len(self.displayText):
            self.active = False

    def draw(self):
        # 至少渲染了一个字符时再执行绘制
        if self.activeIndex > 0:
            self.gameSurface.blit(self.surf, self.rect)

补充说明

  • 若需要调整打字速度,直接修改实例的type_interval属性即可,值越小打字速度越快
  • 若需要实现按按键跳过打字效果,直接将activeIndex设置为len(self.displayText),并标记active=False即可
  • 原有全局帧率、其他动画的更新逻辑完全不需要修改,不会受到任何影响

内容的提问来源于stack exchange,提问作者madmonkey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:18:03