Я новичок в единстве и c#. Я пытаюсь сделать текстовую игру для практики. проблема в том, что в другом состоянии игры разное количество кнопок, и я хочу переключаться между ними с помощью тегов, но это работает только для первого состояния, а затем, когда я пытаюсь перейти к следующему состоянию, повернуть все кнопки
вот код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Textadvanture0 : MonoBehaviour
{
[SerializeField]
Text text0;
[SerializeField]
Text text1;
[SerializeField]
Text text2;
[SerializeField]
Text text3;
[SerializeField]
Text text4;
[SerializeField]
State Startingstate;
State state;
string Flag;
public void ManageStates(int cnt)
{
var nextstate = state.GetNextStates();
if (cnt == 1) //left
{
state= nextstate[0];
}
}
void Start()
{
state = Startingstate;
FlagCheck();
}
void Update()
{
Debug.Log(state.GetChoiceN());
FlagCheck();
text0.text = state.GetStateStory(0);
text1.text = state.GetStateStory(1);
text2.text = state.GetStateStory(2);
text3.text = state.GetStateStory(3);
text4.text = state.GetStateStory(4);
}
void FlagDown()
{
GameObject[] gameObjectArray = GameObject.FindGameObjectsWithTag(Flag);
foreach (GameObject go in gameObjectArray)
{
go.SetActive(false);
}
}
void FlagOn()
{
GameObject[] gameObjectArray = GameObject.FindGameObjectsWithTag(Flag);
foreach (GameObject go in gameObjectArray)
{
go.SetActive(true);
}
}
void FlagCheck()
{
if (state.Choice == 1)
{
Flag = ("Mono Choice");
FlagOn();
Flag = ("Dual Choice");
FlagDown();
Flag = ("Triple Choice");
FlagDown();
}
else if (state.Choice == 2)
{
Flag = ("Mono Choice");
FlagDown();
Flag = ("Dual Choice");
FlagOn();
Flag = ("Triple Choice");
FlagDown();
}
else if (state.Choice == 3)
{
Flag = ("Mono Choice");
FlagDown();
Flag = ("Dual Choice");
FlagDown();
Flag = ("Triple Choice");
FlagOn();
}
}
}
И класс State:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(menuName = "State")]
public class State : ScriptableObject
{
[TextArea(10,14)] [SerializeField] string[] StoryText;
[SerializeField]
public int Choice;
[SerializeField]
State [] Nextstates;
public string GetStateStory(int Counter)
{
return StoryText[Counter];
}
public int GetChoiceN()
{
return Choice;
}
public State[] GetNextStates()
{
return Nextstates;
}
}
по тому, как я получаю индекс, также выходит за пределы ошибки массива, но, похоже, это не так повлиять на игру любым способом, будет оценено любое решение:)