在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文本固定框条内无缝衔接循环滚动效果实现