如何在Ursina的WindowPanel窗口面板中更新文本实体内容?
问题核心原因
- 函数内部修改全局变量
score未加global声明,实际修改的是函数内的局部变量,全局score值根本没有更新 - 初始化
WindowPanel的Text组件时,直接将初始score值转为字符串拼接成了静态文本,后续score变化不会自动同步到面板的文本内容,需要主动修改Text组件的text属性才能更新显示。
修复步骤
- 提前将显示得分的Text组件单独赋值给变量,方便后续调用修改
- 在
challenge函数内添加global score声明,确保修改的是全局计分变量 - 得分更新后主动重新赋值Text组件的
text属性,同步最新得分到面板
修复后可运行代码
from ursina import * score = 0 # 单独定义计分文本组件,后续直接修改这个对象的text属性 score_text = Text(f'当前得分: {score}') def challenge(): global score # 声明要修改全局变量score score += 2 # 主动更新文本内容为最新得分 score_text.text = f'当前得分: {score}' wp.enabled = True app = Ursina() # 单元素元组需要加逗号避免语法解析错误 wp = WindowPanel(content=(score_text,), popup=True, enabled=False) start = Button(parent=scene, text='start', on_click=challenge) app.run()
内容的提问来源于stack exchange,提问作者Gage Fulwood
相关产品推荐
相关产品推荐

