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

如何通过脚本代码编辑UI界面中的文本内容

UI文本展示生命值、得分的实现方案

以下方案基于最常用的Unity引擎实现,如果你用的是其他引擎,核心逻辑一致,只需要替换对应引擎的UI组件API即可。

前置准备

  • 在场景的Canvas节点下创建两个文本组件,优先推荐使用TextMeshPro(显示效果更好、性能更高),如果用原生UGUI Text也完全兼容,分别命名为HealthText、ScoreText,调整位置、字体大小到符合设计要求。

编写控制脚本

如果你使用的是原生UGUI Text组件,只需要把代码中所有TMP_Text替换为Text,同时将开头的using TMPro;替换为using UnityEngine.UI;即可。

using UnityEngine;
using TMPro;

public class GameStatusUI : MonoBehaviour
{
    // 序列化字段,直接在Inspector面板拖拽对应文本组件赋值即可
    [SerializeField] private TMP_Text _healthText;
    [SerializeField] private TMP_Text _scoreText;

    private int _currentHealth;
    private int _currentScore;

    private void Start()
    {
        // 这里替换成你项目的初始生命值、初始得分配置
        _currentHealth = 100;
        _currentScore = 0;
        RefreshUIDisplay();
    }

    /// <summary>
    /// 生命值变动时调用,传入更新后的生命值数值
    /// </summary>
    public void ChangeHealth(int newHealth)
    {
        // 限制生命值最小值为0,避免出现负数血条的异常情况
        _currentHealth = Mathf.Max(0, newHealth);
        RefreshUIDisplay();
    }

    /// <summary>
    /// 得分变动时调用,传入分数变化值(加分为正、扣分为负)
    /// </summary>
    public void ChangeScore(int delta)
    {
        _currentScore += delta;
        RefreshUIDisplay();
    }

    // 统一处理UI刷新逻辑,避免重复写文本赋值代码
    private void RefreshUIDisplay()
    {
        _healthText.text = $"生命值:{_currentHealth}";
        _scoreText.text = $"得分:{_currentScore}";
        // 要调整文本显示格式直接改上面的字符串拼接规则即可,比如要显示"HP: 80/100"、"Score: 1200"直接改拼接内容
    }
}

配置与调用方法

  • 将写好的脚本挂载到场景中不会被轻易销毁的节点上,推荐挂在Canvas或者专门的GameManager空节点上。
  • 选中挂载脚本的节点,在Inspector面板找到对应脚本组件,把之前创建的HealthText、ScoreText节点分别拖拽到脚本的对应属性框中,完成引用赋值。
  • 其他业务逻辑需要修改生命值时,获取该脚本实例后调用ChangeHealth(新的生命值数值)即可,比如玩家受到30点伤害,就调用ChangeHealth(_currentHealth - 30)。
  • 需要修改得分时,调用ChangeScore(分数变化值)即可,比如击败敌人加50分就调用ChangeScore(50),掉坑扣100分就调用ChangeScore(-100)。

常见注意事项

  • 不要在Update()生命周期里每帧给text属性赋值,只在数值实际发生变化的时候调用刷新方法,能减少不必要的性能开销。
  • 如果运行时报空引用错误,优先检查两个文本组件是否在Inspector面板完成了正确赋值,有没有选错组件类型。
  • 如果需要做数值变化的动画效果(比如得分跳字、生命值扣减变红),只需要在RefreshUIDisplay方法里扩展对应的动画逻辑即可,不需要修改外部调用的代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:21:25