Unity Text文本固定框条内无缝衔接循环滚动效果实现

时间:2024-03-27 07:09:42

在Unity中要实现在一个固定背景框条内播放文本,并且文本能够衔接循环滚动,可以通过以下步骤实现:

1、创建一个Image组件作为背景框条,在Image下添加一个Mask组件,如下图:

2、创建Text文本组件,并写好文本内容,调整宽高,然后把该Text组件再复制一个:

3、编写控制脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class TextScroller : MonoBehaviour
{
    public Text text;
    public Text duplicateText;
    public float scrollSpeed = 50f;
    private RectTransform textRect;
    private RectTransform duplicateTextRect;

    // Start is called before the first frame update
    void Start()
    {
        textRect = text.GetComponent<RectTransform>();
        duplicateTextRect = duplicateText.GetComponent<RectTransform>();
        duplicateTextRect.anchoredPosition = new Vector2(textRect.anchoredPosition.x + duplicateTextRect.rect.width, 0);
    }

    // Update is called once per frame
    void Update()
    {
        // 移动文本
        textRect.anchoredPosition -= new Vector2(scrollSpeed * Time.deltaTime, 0);
        duplicateTextRect.anchoredPosition -= new Vector2(scrollSpeed * Time.deltaTime, 0);

        // 当第一份文本移出背景框条时,重置位置
        if (textRect.anchoredPosition.x < -textRect.rect.width)
        {
            textRect.anchoredPosition = new Vector2(duplicateTextRect.anchoredPosition.x + textRect.rect.width, 0);
        }

        // 当第二份文本移出背景框条时,重置位置
        if (duplicateTextRect.anchoredPosition.x < -duplicateTextRect.rect.width)
        {
            duplicateTextRect.anchoredPosition = new Vector2(textRect.anchoredPosition.x + duplicateTextRect.rect.width, 0);
        }
    }
}

4、把脚本放到场景中,并把两个Text文本分别赋予text和duplicateText两个变量。

5、完毕,运行起来。

Unity Text文本固定框条内无缝衔接循环滚动效果实现