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

Ursina引擎子弹数量文本标签异常:首次射击后停止更新

问题解决:Ursina子弹数量文本停止更新

问题根源

你把all_ammo、round_ammo和ammo都定义在了input函数内部,而Ursina的input函数每次触发输入事件(比如点击鼠标)都会重新执行一遍。这意味着每次点击时,这三个变量都会被重置回初始值,Text组件也会重新创建。第一次点击后round_ammo变成99,但下次点击时函数又把它重置回100,再减1还是99,看起来就像没变化。

修复后的代码

from ursina import *

app = Ursina()

# 变量和Text组件只初始化一次,放在input函数外
all_ammo = 100
round_ammo = 100
ammo = Text(
    color=color.red,
    scale=1,
    position=(0.8, 0.5),
    text=f"{all_ammo} {round_ammo}"  # 初始化时设置默认文本
)

def input(key):
    global round_ammo  # 声明要修改全局变量
    if key == "left mouse down":
        round_ammo -= 1
        ammo.text = f"{all_ammo} {round_ammo}"

app.run()

关键改动说明

  • 将变量和Text组件移到input函数外部,确保它们只被初始化一次,不会每次输入事件都重置。
  • 在input函数中添加global round_ammo,告诉Python我们要修改全局作用域的这个变量,避免被当成局部变量处理。
  • 初始化Text时就设置好初始文本,避免第一次点击前显示空白。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 13:15:06