功能:实现当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;
}
}
}