Unity C#
我尝试停用教程最后一页(4)上的下一个按钮,并在我处于前一页(0-3)时将其激活。
[我也想在本教程的首页(0)时停用上一个按钮,而当我在本教程的下一页(1-4)时将其激活。
很遗憾,我不知道为什么,但是我做不到。按钮消失一次,出现一次。反过来,一旦消失,它就不会出现。谁能改善我的代码并解释我做错了什么?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.IO;
using UnityEngine.SceneManagement;
public class MenuPanel : MonoBehaviour
{
public GameObject[] tutorialPage;
[SerializeField] GameObject buttonLeft;
[SerializeField] GameObject buttonRight;
int currentIndex = 0;
public int CurrentIndex
{
get
{
return currentIndex;
}
set
{
if (tutorialPage[currentIndex] != null)
{
//set the current active object to inactive, before replacing it
GameObject aktivesObj = tutorialPage[currentIndex];
aktivesObj.SetActive(false);
}
if (value < 0)
currentIndex = tutorialPage.Length - 1;
else if (value > tutorialPage.Length - 1)
currentIndex = 0;
else
currentIndex = value;
if (tutorialPage[currentIndex] != null)
{
GameObject aktivesObj = tutorialPage[currentIndex];
aktivesObj.SetActive(true);
}
}
}
public void Next(int direction)
{
if (direction >= 1)
CurrentIndex++;
if (currentIndex >= 4)
{
buttonRight.SetActive(false);
}
if (currentIndex <= 3)
{
buttonRight.SetActive(true);
}
}
public void Previous(int
direction)
{
if (direction == 0)
CurrentIndex--;
if (currentIndex ==0)
{
buttonLeft.SetActive(false);
}
if (currentIndex >= 1)
{
buttonLeft.SetActive(true);
}
}
public void OnClickTutorialPanel()
{
currentIndex = 0;
buttonRight.SetActive(true);
buttonLeft.SetActive(false);
tutorialPage[0].SetActive(true);
Tutorial.SetActive(true);
}
public void OnClickBackToSettings(){
tutorialPage[currentIndex].SetActive(false);
Tutorial.SetActive(false);
}
}
仅在单击next时,您将打开/关闭右按钮。
仅在单击上一个时,您正在打开/关闭左按钮
您只需要添加代码即可从上一个打开next按钮,并从下一个打开next按钮
public void Next(int direction)
{
if (direction >= 1)
CurrentIndex++;
if (currentIndex >= 4)
{
buttonRight.SetActive(false);
}
if (currentIndex <= 3)
{
buttonRight.SetActive(true);
}
if (currentIndex >= 1)
{
buttonLeft.SetActive(true);
}
}
public void Previous(int
direction)
{
if (direction == 0)
CurrentIndex--;
if (currentIndex ==0)
{
buttonLeft.SetActive(false);
}
if (currentIndex >= 1)
{
buttonLeft.SetActive(true);
}
if (currentIndex <= 3)
{
buttonRight.SetActive(true);
}
}