- 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