背景循环
其中开始和结束按照选定的分辨率设置,如果出现缝隙,可能有以下集中情况:
1)图片不是屏宽的整数倍。解决:拉伸
2)图片是屏宽整数倍,但边界有透明度。解决:拉伸
3)切换分辨率有缝隙。解决:锚点改上下拉伸,父子物体最好全部改
4)结束位置float不精确。把float转int: if (Convert.ToInt32( rect.anchoredPosition.x )<= endXPos)
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BgRound : MonoBehaviour
{
RectTransform rect1;
RectTransform rect2;
float startX = 1920;
float endX = -1920;
// Start is called before the first frame update
void Start()
{
rect1 = GameObject.Find("Panel1").GetComponent<RectTransform>();
rect2 = GameObject.Find("Panel2").GetComponent<RectTransform>();
}
#region 背景循环(可以实现暂停和继续),协程会有问题
//图片1920的整数倍,假设1920。startX=1920, endX=-1920.
bool IsPass;
void LeftMove(RectTransform rect, float startXPos, float endXPos, float speed)
{
if (Convert.ToInt32(rect.anchoredPosition.x) <= endXPos)
rect.anchoredPosition = new Vector2(startXPos, rect.anchoredPosition.y);
rect.Translate(Vector2.left * speed * Screen.width / 1920f);
}
void Update()
{
if (!IsPass)
{
LeftMove(rect1, startX, endX, 3f);
LeftMove(rect2, startX, endX, 3f);
}
}
#endregion
}