大家好,我正在尝试为游戏菜单的上一个和下一个按钮编程。我制作了一个脚本,并将其附加到具有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);
}
}
最简单的方法是使用相同的脚本,但是添加一个变量来确定其是下一个按钮还是上一个按钮,如下所示:
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。