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

Unity字幕系统开发疑问:如何将字符串数组赋值给Text组件?

问题分析与修正方案

你的实现存在多处关键错误,导致字幕系统无法正常工作,具体问题和修复方法如下:

核心错误点

  • Update循环滥用协程:Update每帧都会执行,你在其中遍历字幕数组启动协程,会导致一帧内同时启动所有字幕的协程,所有字幕被同时触发,完全无法实现逐段播放的效果。
  • 类型与赋值逻辑错误:_Text=_Subtitles这行代码完全不符合逻辑——_Text是Unity的Text组件对象,_Subtitles是字符串数组,两者类型不匹配;要修改Text显示的内容,应该赋值给_Text.text属性,而非组件本身。
  • 协程未传递目标字幕:你的协程没有接收具体的字幕内容,无法针对性设置对应文本。

修正后的代码

public class SubtitleManager : MonoBehaviour
{
    public string[] _Subtitles;
    public Text _Text;
    public float displayDuration = 5f; // 可自定义的字幕显示时长

    void Start()
    {
        // 仅在启动时执行一次协程即可
        StartCoroutine(PlaySubtitlesSequence());
    }

    IEnumerator PlaySubtitlesSequence()
    {
        // 遍历字幕数组,依次显示每个字幕
        foreach (string subtitle in _Subtitles)
        {
            _Text.text = subtitle; // 给Text组件的显示文本赋值
            yield return new WaitForSeconds(displayDuration); // 等待指定时长后切换下一条
        }

        // 所有字幕播放完毕后清空文本(可选)
        _Text.text = string.Empty;
    }
}

额外注意事项

  • 确保在Unity编辑器中,已将场景中的Text组件拖拽赋值给_Text字段。
  • 确认_Subtitles数组已在编辑器中添加了需要显示的字幕内容。
  • 如果需要支持中途暂停/继续功能,可以添加布尔变量控制协程的执行状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 20:25:09