I am working on a text-based choose your own adventure game where I use states (borrowed from the Unity 2D course on Udemy) to make text appear in the game.
Code to make the states:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(menuName = “State”)]
public class State : ScriptableObject {
[TextArea(10, 14)][SerializeField] string storyText;
[SerializeField] State[] nextStates;
public string GetStateStory(){
return storyText;
}
public State[] GetNextState(){
return nextStates;
}
}
Code for changing text:
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class StoryText : MonoBehaviour
{
[SerializeField] Text textComponent;
[SerializeField] State startingState;
State state;
// Use this for initialization
void Start()
{
state = startingState;
textComponent.text = state.GetStateStory();
}
// Update is called once per frame
void Update()
{
ManageState();
}
private void ManageState()
{
var nextStates = state.GetNextState();
if (Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Alpha1))
{
state = nextStates[0];
textComponent.text = state.GetStateStory();
}
}
}
This is the current code I have trying to make a button appear on a specific state:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class ShowButton : MonoBehaviour
{
[SerializeField] Button buttonOne;
[SerializeField] Button buttonTwo;
State state;
// Use this for initialization
void Start()
{
var nextState = state.GetNextState();
buttonOne.gameObject.SetActive(false);
buttonTwo.gameObject.SetActive(false);
if (state = nextState[0])
{
buttonOne.gameObject.SetActive(true);
buttonTwo.gameObject.SetActive(true);
}
}
}
Any help would be greatly appreciated.