试图弄清楚如何制作下一个和上一个按钮

问题描述 投票:1回答:1

大家好,我正在尝试为游戏菜单的上一个和下一个按钮编程。我制作了一个脚本,并将其附加到具有Collider的精灵上。单击此对撞机时,它将加载下一张图像。如何创建上一个和下一个按钮,我是否要制作另一个游戏对象并将此脚本分配给他们?

这里是脚本。

public class InfoButtonLoad : GameButton
{
    public static InfoButtonLoad the;
    [SerializeField] private GameObject[] infoSelect;
    public int infoSwitch;

    void Start()
    {
        the = this;
    }

    public override void PressAction()
    {
        infoSwitch++;
        InfoButtonCase();
    }

    public void InfoButtonCase()
    {
        switch (infoSwitch)
        {
            case 1:
                infoSelect[0].SetActive(true);
                infoSelect[1].SetActive(false);
                break;
            case 2:
                infoSelect[0].SetActive(false);
                infoSelect[1].SetActive(true);
                break;
            case 3:
                infoSelect[1].SetActive(false);
                infoSelect[2].SetActive(true);
                break;
            case 4:
                infoSelect[2].SetActive(false);
                infoSelect[3].SetActive(true);
                break;
            case 5:
                infoSelect[3].SetActive(false);
                infoSelect[4].SetActive(true);
                infoSwitch = 0;
                break;
        }
    }
    void HideInfo()
    {
        for (var i = 0; i < infoSelect.Length; i++)
            infoSelect[i].SetActive(false);
    }
}
c# visual-studio unity3d
1个回答
2
投票

最简单的方法是使用相同的脚本,但是添加一个变量来确定其是下一个按钮还是上一个按钮,如下所示:

public class InfoButtonLoad : GameButton
{
    public static InfoButtonLoad the;
    public bool isNext;
    [SerializeField] private GameObject[] infoSelect;
    public int infoSwitch;

    void Start()
    {

    }

    public override void PressAction()
    {
        if(isNext){
            infoSwitch++;
            if(infoSwitch == 5){
                infoSwitch = 0;
            }
        }else{
            infoSwitch--;
            if(infoSwitch == 0){
                infoSwitch = 4;
            }
        }
        InfoButtonCase();
    }

    public void InfoButtonCase()
    {
        foreach(GameObject info in infoSelect)
        {
            info.SetActive(false);
        }
        infoSelect[infoSwitch].SetActive(true);

    }
    void HideInfo()
    {
        for (var i = 0; i < infoSelect.Length; i++)
            infoSelect[i].SetActive(false);
    }
}

我还删除了您的开关,因为它可以用更少的行替换。您要做的就是在两个按钮中都设置脚本,然后在检查器中的“下一步”按钮中检查isNext。

© www.soinside.com 2019 - 2024. All rights reserved.