如何从单一的幻灯片放映中显示纹理数组中的图像

时间:2016-11-28 08:00:14

标签: arrays unity3d

  • 我有一个场景,在特定时间后的幻灯片放映 图像应该开始。

  • 我创建了纹理数组并将图像加载到数组中 检查员。

  • 现在我需要每两秒钟后滑动一次图像。

  • 这是我已经完成的代码,但它是错误

    public Texture[] Images;
    
    void ChangeImage()
    

    {

    for(int i=1;i<Imagez.Length;i++)
    {
    
        print (Imagez [i].ToString());
        Imag =Imagez [i];
    
    }
    
    
    }
    

我尝试从阵列加载每个图像,但我知道它不是正确的方法..可以任何人请帮助

1 个答案:

答案 0 :(得分:2)

添加一个滚动矩形,然后为容器添加一个面板,并使该面板成为滚动矩形以进行控制。

然后容器获取Horizo​​ntal / 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的速度。