我有一个场景,在特定时间后的幻灯片放映 图像应该开始。
我创建了纹理数组并将图像加载到数组中 检查员。
现在我需要每两秒钟后滑动一次图像。
这是我已经完成的代码,但它是错误
public Texture[] Images;
void ChangeImage()
{
for(int i=1;i<Imagez.Length;i++)
{
print (Imagez [i].ToString());
Imag =Imagez [i];
}
}
我尝试从阵列加载每个图像,但我知道它不是正确的方法..可以任何人请帮助
答案 0 :(得分:2)
添加一个滚动矩形,然后为容器添加一个面板,并使该面板成为滚动矩形以进行控制。
然后容器获取Horizontal / VerticalLayoutGroup。添加所有图像并设置容器大小,以便正确显示。
运行游戏,您应该能够适当地滚动它们(确保约束运动hor / vert以使其正确移动)。
private int currentIndex = 0;
[SerializeField] private float imageSize;
[SerializeField] private RectTransform panel;
[SerializeField] private float frequency;
void Start()
{
InvokeRepeating("IncreaseCurrentIndex", frequency,frequency);
}
private void IncreaseCurrentIndex()
{
if(++this.currentIndex >= this.imageCount){ this.currentIndex = 0; }
}
void MoveToNextItem()
{
float targetX = (float)this.currentIndex * this.imageSize;
Vector2 delta = this.panel.anchoredPosition;
delta.x = Mathf.MoveTowards(delta.x, targetX, Time.deltaTime * speed);
this.panel.anchoredPosition = delta;
}
首先,在检查器中指定图像的大小。面板是所有图像的容器。我猜其余的都是自我解释的。
代码尽可能简单,它可以带来更大的灵活性,但至少应该按原样使用。
注意:这适用于水平滚动。您可以在垂直滚动更新中更改x的y。此外,它使用Mathf.MoveTowards,您可以使用lerp而不是scroll rect的速度。