Unity Text文字自动滚动

it2024-08-05  40

功能:实现当Text文本内容超过文本框时,自上而下循环滚动

使用Scroll View实现 

在Content上添加Text组件和Content Size Fitter

代码:

public class ScrollContent : MonoBehaviour { public static ScrollContent instance; bool isStartScroll = false; //是否开始滚动 GameObject _content = null; //添加Text组件的Content float _scrollSpeed = 20; //滚动速度 float heightChange = 0; //滚动的高度(根据当前文字数量和默认文本框的大小决定) float posY = 0; //动态修改的Content_PosY private void Awake() { if (instance == null) { instance = this; } } float waitTime = 2; void Update() { if (isStartScroll) { if (posY >= heightChange) { waitTime -= Time.deltaTime; if (waitTime <= 0) { posY = 0; waitTime = 2; } } else { if (posY == 0) { waitTime -= Time.deltaTime; if (waitTime <= 0) { posY += Time.deltaTime * _scrollSpeed; waitTime = 2; } } else { posY += Time.deltaTime * _scrollSpeed; } } _content.GetComponent<RectTransform>().anchoredPosition = new Vector2(5, posY); } } //调用此协程即可 public IEnumerator SetContent(GameObject content,float scrollSpeed) { yield return new WaitForEndOfFrame(); //等待 否则获取不到当前Height _content = content; _scrollSpeed = scrollSpeed; heightChange = content.GetComponent<RectTransform>().sizeDelta.y - content.transform.parent.parent.GetComponent<RectTransform>().sizeDelta.y; posY = 0; if (heightChange > 0) { isStartScroll = true; } else { isStartScroll = false; } } }

 

最新回复(0)