when i hit a key one time to switch state it works but secund time i get IndexOutOfRangeException: Index was outside the bounds of the array. anyone knows why:hugs:
code:
AdventureGame.cs
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class AdventureGame : MonoBehaviour
{
public Text textComponemt;
public State startingState;
State state;
// Start is called before the first frame update
void Start()
{
state = startingState;
textComponemt.text = state.GetStateStory();
}
// Update is called once per frame
void Update()
{
ManageState();
}
private void ManageState()
{
var nextStates = state.GetNextStates();
if (Input.GetKeyDown(KeyCode.Alpha1))
{
state = nextStates[0];
}
else if (Input.GetKeyDown(KeyCode.Alpha2))
{
state = nextStates[1];
}
else if (Input.GetKeyDown(KeyCode.Alpha3))
{
state = nextStates[2];
}
textComponemt.text = state.GetStateStory();
}
}
state.cs
type or pasusing System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(menuName = "State")]
public class State : ScriptableObject
{
[TextArea(19, 14)] public string storyText;
[SerializeField] State[] nextStates;
public string GetStateStory()
{
return storyText;
}
public State[] GetNextStates()
{
return nextStates;
}
}