How to make text appear in script?
So, I am not going to lie,
I haven't been coding for 2 years(due to life reasons) so everything went out the window.
What I am trying to do to ease myself back into this is doing Rock, Paper, Scissors. I have gotten pretty far but am at the point where the Debug.Log is not being helpful anymore.
So I would like to make some text appear then disappear after either Player wins or CPU wins.
using UnityEngine;
using System.Collections;
public class RPSFigureOUt : MonoBehaviour {
public bool WhoWon = false;
// Update is called once per frame
void Update ()
{
if(Player.PlayerIsReady = true)
{
if(ComputerAI.CPUisReady = true)
{
if(Player.PlayerRock == true && ComputerAI.CpuRock == true)
{
Debug.Log("Nobody Wins! :D");
Player.PlayerIsReady = false;
ComputerAI.CPUisReady = false;
Player.CanPick = true;
ComputerAI.CpuCanPick = true;
}
else if(Player.PlayerRock == true && ComputerAI.CpuPaper == true)
{
Debug.Log("CPU WINS! :D");
ScoreTracker.Computer_Wins +=1;
ComputerAI.CpuCanFight = true;
Player.CanPick = true;
ComputerAI.CpuCanPick = true;
}
else if (Player.PlayerRock == true && ComputerAI.CpuScizzors == true)
{
Debug.Log ("Player Wins!");
ScoreTracker.Player_Wins +=1;
Player.PlayerCanFight = true;
Player.CanPick = true;
ComputerAI.CpuCanPick = true;
}
else if (Player.PlayerPaper == true && ComputerAI.CpuRock == true)
{
Debug.Log("Player Wins!");
ScoreTracker.Player_Wins +=1;
Player.PlayerCanFight = true;
Player.CanPick = true;
ComputerAI.CpuCanPick = true;
}
else if(Player.PlayerPaper == true && ComputerAI.CpuPaper == true)
{
Debug.Log ("Nobody Wins! :D");
Player.PlayerIsReady = false;
ComputerAI.CPUisReady = false;
Player.CanPick = true;
ComputerAI.CpuCanPick = true;
}
else if (Player.PlayerPaper == true && ComputerAI.CpuScizzors == true)
{
Debug.Log ("CPU WINS! :D");
ScoreTracker.Computer_Wins +=1;
ComputerAI.CpuCanFight = true;
Player.CanPick = true;
ComputerAI.CpuCanPick = true;
}
}
}
}
}
Here is the code so far. It works as intended. I just have no idea like how to make the text appear on screen or where I should put it....
I am sorry to bother you all with my stupidity!
-Squizy
Answer by Makri907 · Nov 08, 2016 at 04:51 PM
You aren't stupid. Well, I would first create a Text object which can be found under the UI tab. Then I would add this to my code:
using UnityEngine;
using System.Collections;
**using UnityEngine.UI;**
public class RPSFigureOUt : MonoBehaviour {
public bool WhoWon = false;
**public Text displayWinner;**
// Update is called once per frame
void Update ()
{
if(Player.PlayerIsReady = true)
{
if(ComputerAI.CPUisReady = true)
{
if(Player.PlayerRock == true && ComputerAI.CpuRock == true)
{
**displayWinner.text = "Nobody Wins! :D";**
Debug.Log("Nobody Wins! :D");
Player.PlayerIsReady = false;
ComputerAI.CPUisReady = false;
Player.CanPick = true;
ComputerAI.CpuCanPick = true;
}
else if(Player.PlayerRock == true && ComputerAI.CpuPaper == true)
{
**displayWinner.text = "CPU Wins! :D";**
Debug.Log("CPU WINS! :D");
ScoreTracker.Computer_Wins +=1;
ComputerAI.CpuCanFight = true;
Player.CanPick = true;
ComputerAI.CpuCanPick = true;
}
else if (Player.PlayerRock == true && ComputerAI.CpuScizzors == true)
{
**displayWinner.text = "Player Wins! :D";**
Debug.Log ("Player Wins!");
ScoreTracker.Player_Wins +=1;
Player.PlayerCanFight = true;
Player.CanPick = true;
ComputerAI.CpuCanPick = true;
}
else if (Player.PlayerPaper == true && ComputerAI.CpuRock == true)
{
**displayWinner.text = "Player Wins! :D";**
Debug.Log("Player Wins!");
ScoreTracker.Player_Wins +=1;
Player.PlayerCanFight = true;
Player.CanPick = true;
ComputerAI.CpuCanPick = true;
}
else if(Player.PlayerPaper == true && ComputerAI.CpuPaper == true)
{
**displayWinner.text = "Nobody Wins! :D";**
Debug.Log ("Nobody Wins! :D");
Player.PlayerIsReady = false;
ComputerAI.CPUisReady = false;
Player.CanPick = true;
ComputerAI.CpuCanPick = true;
}
else if (Player.PlayerPaper == true && ComputerAI.CpuScizzors == true)
{
**displayWinner.text = "CPU Wins! :D";**
Debug.Log ("CPU WINS! :D");
ScoreTracker.Computer_Wins +=1;
ComputerAI.CpuCanFight = true;
Player.CanPick = true;
ComputerAI.CpuCanPick = true;
}
}
}
}
Note: Things I added are contained by asterisks. Also, you will need to go to the inspector to drag the text object onto the "displayWinner" slot on your script. Also, you can set displayText.text = ""; whenever your players are not ready. This will make the text disappear.
@$$anonymous$$akri907 I have changed my code to basically what you changed but it says that the object reference is not set to an instance of an object how would I fix this? (Here is my code) (I called displayWinner answer)
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine.Scene$$anonymous$$anagement;
public class Game$$anonymous$$anager : $$anonymous$$onoBehaviour {
public Question[] questions;
private static List<Question> unansweredQuestions;
private Question currentQuestion;
public Text answer;
[SerializeField]
private Text factText;
[SerializeField]
private Text trueAnswerText;
[SerializeField]
private Text falseAnswerText;
[SerializeField]
private Animator animator;
[SerializeField]
private float timeBetweenQuestions = 5f;
public float speed = 5f;
void Start()
{
if (unansweredQuestions == null || unansweredQuestions.Count == 0)
{
unansweredQuestions = questions.ToList<Question>();
}
SetCurrentQuestion();
}
void SetCurrentQuestion()
{
int randomQuestionIndex = Random.Range(0, unansweredQuestions.Count);
currentQuestion = unansweredQuestions[randomQuestionIndex];
factText.text = currentQuestion.fact;
if (currentQuestion.isTrue)
{
trueAnswerText.text = "Correct!";
falseAnswerText.text = "False!";
}
else
{
trueAnswerText.text = "Wrong!";
falseAnswerText.text = "Correct!";
}
}
IEnumerator TransitionToNextQuestion()
{
unansweredQuestions.Remove(currentQuestion);
yield return new WaitForSeconds(timeBetweenQuestions);
Scene$$anonymous$$anager.LoadScene(Scene$$anonymous$$anager.GetActiveScene().buildIndex);
}
public void UserSelectTrue ()
{
if (currentQuestion.isTrue)
{
answer.text = "Correct!";
Debug.Log("Correct");
} else
{
answer.text = "Incorrect!";
Debug.Log("Wrong");
}
StartCoroutine(TransitionToNextQuestion());
}
public void UserSelectFalse ()
{
if (!currentQuestion.isTrue)
{
answer.text = "Correct!";
Debug.Log("Correct");
}else
{
answer.text = "Incorrect!";
Debug.Log("Wrong");
}
StartCoroutine(TransitionToNextQuestion());
}
}
Your answer
Follow this Question
Related Questions
How do you show/hide textUI in Javascript? 1 Answer
Display rigidbody speed to a world space canvas text 2 Answers
Built game on Android has GUI text pink, and slider menu has disappeared. 0 Answers
5.2 UI is BROKEN! 2 Answers
How to add text to a box ? 2 Answers