如何在Unity程序中打印自定义文本并实现每秒自动更新
Unity 5.6.6f2 文本显示与自动更新实现方案
一、基础文本显示实现
你需要先通过UGUI的Text组件完成文本渲染,操作步骤如下:
- 顶部菜单栏选择
GameObject->UI->Text,引擎会自动生成Canvas画布和Text文本对象 - 选中生成的Text对象,在Inspector面板可自定义调整字体、字号、颜色、对齐方式、屏幕显示位置
- 在逻辑脚本中声明public类型的Text变量,将场景里的Text对象拖到对应变量位置完成引用绑定,基础代码示例:
using UnityEngine; using UnityEngine.UI; public class CustomTextDisplay : MonoBehaviour { // Inspector面板拖入场景中的Text组件 public Text displayText; // 预设要显示的自定义文本 public string inputText = "你要打印的自定义内容"; // 如果需要接收运行时玩家输入的文本,额外声明InputField变量绑定场景的输入框组件即可 // public InputField inputField; }
二、每秒自动更新文本实现
两种常用实现方案可按需选择:
方案1:InvokeRepeating 实现(最简单)
通过Unity内置的重复调用方法直接固定间隔更新,代码示例:
void Start() { // 参数说明:要调用的方法名、启动后延迟多久执行第一次、每次调用的间隔(单位:秒) InvokeRepeating("RefreshText", 0f, 1f); } void RefreshText() { // 直接赋值更新文本内容即可 displayText.text = inputText; // 如果是读取运行时输入框的内容,替换为下面的代码 // displayText.text = inputField.text; // 动态内容更新示例:显示游戏运行时长 // displayText.text = "游戏已运行:" + Mathf.FloorToInt(Time.time) + "秒"; }
方案2:时间差判断实现(适合需要灵活控制启停的场景)
private float timer = 0f; void Update() { timer += Time.deltaTime; if (timer >= 1f) { timer = 0f; // 执行文本更新逻辑 displayText.text = inputText; } }
现有代码调整参考
你当前编写的代码截图如下:
注意:Unity 5.6版本必须引入UnityEngine.UI命名空间,否则会报Text类找不到的编译错误。
内容的提问来源于stack exchange,提问作者Jonathan Lee
相关产品推荐
相关产品推荐

