在Python的Ursina框架中如何更新Text实体的文本内容?
解决Ursina中TIME文本不动态更新的问题
1. 补充缺失的time模块导入
你的代码未导入time模块,会导致time.strftime调用失败,Ursina默认不会抛出明显报错,进而让文本更新逻辑无法执行。需要在代码开头添加:
import time from ursina import Text, Ursina
2. 确保完成实例化与应用启动
你需要创建TIME类的实例,并且启动Ursina的主循环,否则组件不会被加载到场景中,update方法也不会被触发。完整可运行代码示例:
import time from ursina import Text, Ursina BUTTON_INDENT = -1 class TIME(Text): def __init__(self): super().__init__( text=time.strftime("%H:%M"), position=(0, 0, BUTTON_INDENT) ) def update(self): self.text = time.strftime("%H:%M") if __name__ == "__main__": app = Ursina() # 实例化时间显示组件 time_display = TIME() app.run()
3. 可选:优化更新频率(减少不必要的计算)
当前代码每帧都会调用时间格式化函数,实际上每分钟更新一次就足够。可以添加计时器逻辑优化性能:
import time from ursina import Text, Ursina BUTTON_INDENT = -1 class TIME(Text): def __init__(self): super().__init__( text=time.strftime("%H:%M"), position=(0, 0, BUTTON_INDENT) ) # 记录上次更新的分钟数 self.last_minute = time.localtime().tm_min def update(self): current_minute = time.localtime().tm_min if current_minute != self.last_minute: self.text = time.strftime("%H:%M") self.last_minute = current_minute if __name__ == "__main__": app = Ursina() time_display = TIME() app.run()
内容的提问来源于stack exchange,提问作者Recentaly
相关产品推荐
相关产品推荐

