You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Unity 2018.1中如何创建字幕系统?本人为C#新手

嘿,作为C#新手完全不用担心,在Unity 2018.1里做个简单的字幕系统其实挺容易的,而且不需要配音功能也完全没问题。我给你一步步拆解,都是最基础的操作,跟着来就行~

第一步:创建UI文本组件
  • 在Unity编辑器顶部菜单选 GameObject > UI > Text,Unity会自动生成一个带Canvas的Text对象(UI元素必须依赖Canvas才能显示)
  • 调整Text的位置、字体大小、颜色:比如把它拖到屏幕底部居中,字号设为30,颜色选白色(或者匹配你游戏风格的颜色)
  • 给Text对象改个好记的名字,比如SubtitleText,方便后续操作
第二步:编写字幕控制脚本
  • 在Project窗口右键选择 Create > C# Script,命名为SubtitleManager
  • 打开脚本,替换成下面的代码(我加了详细注释,你能看懂每一步在做什么):
using UnityEngine;
using UnityEngine.UI;

public class SubtitleManager : MonoBehaviour
{
    // 把场景里的SubtitleText拖到这里
    public Text subtitleText;
    // 存储所有要显示的字幕内容
    public string[] subtitleLines;
    // 当前显示的字幕序号
    private int currentLine = 0;
    // 每句字幕自动显示的时长(单位:秒)
    public float displayDuration = 3f;
    // 计时器,用来控制切换字幕
    private float timer;

    void Start()
    {
        // 初始状态先清空字幕
        subtitleText.text = "";
        // 如果有字幕内容,直接显示第一句
        if(subtitleLines.Length > 0)
        {
            ShowCurrentLine();
        }
    }

    void Update()
    {
        // 没有更多字幕的话,直接清空并退出
        if(currentLine >= subtitleLines.Length)
        {
            subtitleText.text = "";
            return;
        }

        // 累计时间
        timer += Time.deltaTime;
        // 到了设定时长就切换下一句
        if(timer >= displayDuration)
        {
            currentLine++;
            if(currentLine < subtitleLines.Length)
            {
                ShowCurrentLine();
            }
            // 重置计时器
            timer = 0f;
        }

        // 可选:按空格键手动切换字幕(玩家自己控制节奏)
        if(Input.GetKeyDown(KeyCode.Space))
        {
            NextLine();
        }
    }

    // 显示当前序号的字幕
    void ShowCurrentLine()
    {
        subtitleText.text = subtitleLines[currentLine];
    }

    // 手动切换下一句的方法(也可以绑定到按钮)
    public void NextLine()
    {
        currentLine++;
        if(currentLine < subtitleLines.Length)
        {
            ShowCurrentLine();
            timer = 0f; // 重置计时器,重新开始计时
        }
        else
        {
            subtitleText.text = "";
        }
    }
}
第三步:设置脚本并测试
  • 在场景里创建一个空对象,命名为SubtitleController,把SubtitleManager脚本拖到这个对象上
  • 在Inspector面板里,把场景中的SubtitleText拖到脚本的subtitleText字段中
  • 找到subtitleLines,点击数组大小的数字(比如设为4),然后在每个输入框里填你的字幕内容,比如“欢迎来到这个场景!”“这里是第一句字幕”“现在切换到第二句啦”“字幕展示结束~”
  • 调整displayDuration的值,比如设为2,就是每句自动显示2秒
  • 点击运行按钮,就能看到字幕自动切换了,按空格还能手动跳句
小进阶(可选,新手可以之后再试)
  • 如果需要不同句子显示不同时长,可以把subtitleLines改成自定义类(包含文本和对应时长),不过先把基础版玩熟再说
  • 给字幕加淡入淡出效果:给SubtitleText加个CanvasGroup组件,在切换字幕时调整alpha值实现渐变
  • 把字幕存在外部.txt文件里,用代码读取,这样不用在Inspector里逐个输入

这些操作都是最基础的,你跟着一步步来肯定没问题,要是哪里卡壳了,仔细检查组件有没有拖对、脚本有没有拼写错误就好~

内容的提问来源于stack exchange,提问作者Edward P.

火山引擎 最新活动