- Home /
Making a button appear on a specific state?
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.
Answer by highpockets · Apr 12, 2019 at 07:27 PM
You are missing 1 “=“ in the if statement that checks the state in the last script.
if(state == nextState[0])
Your answer
Follow this Question
Related Questions
Making a previously selected UI button interactable again 1 Answer
positioning ui buttons in a scrollview 1 Answer
How to detect interactable state change in selectable objects (Buttons, etc.) 3 Answers
Button on Panel is not responding 1 Answer
RPG Maker style menu with UI buttons that are selected by controller 0 Answers