- Home /
Text wont change to correct value
So I'm not very experienced and I've been working on a game where you have to tap at the right time to get points. In this gamemode, if you don't tap when the timer hits 0, or if you tap at the wrong time, you lose. When you lose, a text asks you if you would like to try again. Like this:
It works correctly when you tap at the wrong time, but if you don't tap when the timer hits 0, the text changes to the wrong value. Like this:
The font size is supposed to change, but the text is supposed to say "Try Again?" I'm sure it's a simple fix, but I can't figure it out. Here's my code(js):
#pragma strict
var taptext : UI.Text;
var tapnumber : float;
var roundtapnumber : int;
var isStarted : boolean = false;
var wasClicked : boolean;
var score : int;
var scoretext : UI.Text;
var highscore : int;
var highscoretext : UI.Text;
function Start () {
taptext.fontSize = 50;
taptext.text = "Start";
}
function Update () {
highscore = PlayerPrefs.GetInt("cantmisshs");
scoretext.text = "Score: " + score;
highscoretext.text = "High Score: " + highscore;
if(isStarted == true) {
roundtapnumber = Mathf.Round(tapnumber);
if(tapnumber <= 0) {
if(wasClicked == false) {
gameOver();
} else if(wasClicked == true) {
wasClicked = false;
}
tapnumber = 10;
} else if(tapnumber > 0) {
tapnumber -= Time.deltaTime * 4;
}
if(roundtapnumber >= 10) {
taptext.text = "" + roundtapnumber;
} else if(roundtapnumber < 10) {
taptext.text = "0" + roundtapnumber;
}
}
}
function isClicked () {
if(isStarted == false) {
isStarted = true;
taptext.fontSize = 80;
tapnumber = 10;
} else if(isStarted == true) {
if(roundtapnumber == 0) {
wasClicked = true;
score += 1;
if(score > highscore) {
PlayerPrefs.SetInt("cantmisshs", score);
}
} else {
gameOver();
}
}
}
function gameOver() {
isStarted = false;
score = 0;
taptext.text = "Try Again?";
taptext.fontSize = 25;
}
I'm usually not very good at explaining problems like this, so if you have any questions about what I'm trying to do, feel free to ask. Thanks in advance for any help :)
Answer by EnterX Studios · Apr 24, 2016 at 02:40 PM
I fixed it by adding a boolean that ticks after the first time you hit start, and adding the text change as an else if statement, like this:
var taptext : UI.Text;
var tapnumber : float;
var roundtapnumber : int;
var isStarted : boolean = false;
var wasClicked : boolean;
var hasBeenStarted: boolean;
var score : int;
var scoretext : UI.Text;
var highscore : int;
var highscoretext : UI.Text;
function Update () {
highscore = PlayerPrefs.GetInt("cantmisshs");
scoretext.text = "Score: " + score;
highscoretext.text = "High Score: " + highscore;
if(isStarted == true) {
roundtapnumber = Mathf.Round(tapnumber);
if(tapnumber <= 0) {
if(wasClicked == false) {
gameOver();
} else if(wasClicked == true) {
wasClicked = false;
}
tapnumber = 10;
} else if(tapnumber > 0) {
tapnumber -= Time.deltaTime * 4;
}
if(roundtapnumber >= 10) {
taptext.text = "" + roundtapnumber;
} else if(roundtapnumber < 10) {
taptext.text = "0" + roundtapnumber;
}
} else if(hasBeenStarted == true) {
taptext.fontSize = 25;
taptext.text = "Try Again?";
}
}
function isClicked () {
if(isStarted == false) {
isStarted = true;
taptext.fontSize = 80;
tapnumber = 10;
hasBeenStarted = true;
} else if(isStarted == true) {
if(roundtapnumber == 0) {
wasClicked = true;
score += 1;
if(score > highscore) {
PlayerPrefs.SetInt("cantmisshs", score);
}
} else {
gameOver();
}
}
}
So when you click the first time, the boolean ticks, and whenever the game ends and is stopped, the text will change to "Try Again?" I couldn't figure out why it wouldn't work in the gameOver function, but I got it to work with some sloppy code so I guess I solved it.
Your answer
Follow this Question
Related Questions
Inputfield text to String variable 1 Answer
Disable and Enable UI text in function 1 Answer
UI Text showing weird string value? 1 Answer
Font renders incorrectly 1 Answer