使用Unity中的GetKeyDown一次显示一个数组中的元素

科特迪瓦(Ivor Kuzmick)

我实质上是想在Unity 2018中制作幻灯片。我想每次显示新图像,例如,按下右箭头键。我可以通过在每次按下右箭头键时加载一个全新的场景来做到这一点,但是我可能有成千上万个场景(这是一个很长的幻灯片!),我想知道是否没有更优雅的解决方案。我认为最好的方法是使用图像数组和一个简单的for循环,以移动到数组中的下一个索引。

因此,我创建了一些图像GameObjects和一个将它们放入数组的脚本。我的问题是,每当我按向右箭头键时,实现的for循环就会一直朝着数组末尾的方向射击,因此我只能看到最后一张图像。我希望能够按右箭头键一张一张地浏览每个图像。

我的代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class LoadImage : MonoBehaviour {

[SerializeField] private Image newImage;
[SerializeField] Image[] nextImage;

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
    GetNextImage();
} 

private Image GetNextImage()
{
    if (Input.GetKeyDown(KeyCode.RightArrow))
    {
        for (int i = 0; i < nextImage.Length; i++)
        {
            newImage = nextImage[i];
            newImage.enabled = true;
        }
    }
    return newImage;
}
} 

这是游戏停止运行时我的Unity工作空间的一些图像:

游戏已停止

游戏正在运行,但我没有按向右箭头键

游戏正在运行,我按下了向右箭头键

如您在最后一个图像中看到的,而不是移动到element_1并停留在那里直到再次按下右箭头,它一直迭代直到element_2。

如您所知,我是新手,非常感谢您的帮助。

谢谢。

游戏生成器

此刻,您的for循环始终从0开始,因为i = 0并在图像数组的末尾结束。但是您不需要循环。您必须记住当前图像的编号。此示例说明了它如何在一个方向上工作。

    int currentImageIndex = 0;
    private Image GetNextImage()
    {
        if (Input.GetKeyDown(KeyCode.RightArrow) && currentImageIndex < nextImage.Length)
        {
            //Take image on current postion
            newImage = nextImage[currentImageIndex]; 
            newImage.enabled = true;
            //Add one to currentImageIndex 
            currentImageIndex++;
        }
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用按钮一次在Javascript中显示一个数组字符串

如何仅使用 Javascript 一次显示一个数组元素?

排序的多维数组一次显示一个数组中的值

Vue.js 一次显示一个数组中的数据

如何一次从时间间隔中的外部JSON文件解析一个数组

javascript:如果一个值在另一个数组中,则只删除一次

查找两个数组之间的所有值组合,其中一个数组中的值只能使用一次?

setRichTextValue 到数组中的元素而不是一次一个单元格?

如何一次将一个元素多次添加到数组中

(C) 在数组中查找一个元素并只打印一次它的位置

使用isSame函数从momnet的另一个数组元素中删除一个数组元素

我怎样才能得到一个数组中的一个元素在另一个数组中存在多少次?

AngularJS:一次在数组中显示一个特定的对象

使用另一个数组中的元素过滤数组中的元素

如何一次只在一个数组元素上设置状态?

一次从变量中删除一个数据元素(值)并在R中执行功能

React - 一次显示一个数组值并随着点击而改变

如何一次显示列表中的一个元素而不在 Python 中重复相同的元素

如何使用一个数组来验证另一个数组中的元素长度?

在一个单独的数组中显示两个数组的相同元素

仅显示存在于另一个数组中的数组元素

如何使用一个按钮一次显示一个VStack中2个结构的内容?

角度显示一个数组中的数组值

为数组中的一个数字设置5秒超时,但不能一次全部超时

在AngularJS中寻找一种更好的方法来遍历并一次显示一个元素

一次显示一个元素

从列表一次显示一个元素/格

从第一个数组中删除除第一次出现的第二个数组项之外的所有项

如何一次遍历 2 个数组并将数组中的颜色分配给另一个数组的每个值