Question by
idohadar111 · Mar 30, 2017 at 07:03 PM ·
c#textstringwhile-loopwrite data
Why is my code not working? [please help]
I am trying to write numbers with a keypad and using a while loop to get the input from the user, every time I attempt to test it the game freezes . using UnityEngine; using System.Collections; using UnityEngine.UI;
public class TCLockNum : MonoBehaviour {
public Text Num;
private enum States {lock_1, lock_2};
private States myState;
public string num;
void Start () {
state_lock_1();
}
void Update () {
if (myState == States.lock_2) {
state_lock_2();
}
}
void state_lock_1 () {
while (num.Length<6) {
if (Input.GetKeyDown(KeyCode.Keypad1)) {
num=num+"1";
}else if (Input.GetKeyDown(KeyCode.Keypad2)) {
num=num+"2";
}else if (Input.GetKeyDown(KeyCode.Keypad3)) {
num=num+"3";
}else if (Input.GetKeyDown(KeyCode.Keypad4)) {
num=num+"4";
}else if (Input.GetKeyDown(KeyCode.Keypad5)) {
num=num+"5";
}else if (Input.GetKeyDown(KeyCode.Keypad6)) {
num=num+"6";
}else if (Input.GetKeyDown(KeyCode.Keypad7)) {
num=num+"7";
}else if (Input.GetKeyDown(KeyCode.Keypad8)) {
num=num+"8";
}else if (Input.GetKeyDown(KeyCode.Keypad9)) {
num=num+"9";
}else if (Input.GetKeyDown(KeyCode.Keypad0)) {
num=num+"0";
}
}
Num.text=num;
}
void state_lock_2 () {
}
}
Comment
Answer by UnityCoach · Mar 30, 2017 at 07:49 PM
You're basically getting into a while loop within Update. Try reversing the logic. Test if (num.Length<6)
, then get all the inputs, add numbers, etc..
Something in the like :
void Update () {
if (num.Length<6) {
if (Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.$$anonymous$$eypad1)) {
num=num+"1";
}else if (Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.$$anonymous$$eypad2)) {
num=num+"2";
}else if (Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.$$anonymous$$eypad3)) {
num=num+"3";
}else if (Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.$$anonymous$$eypad4)) {
num=num+"4";
}else if (Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.$$anonymous$$eypad5)) {
num=num+"5";
}else if (Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.$$anonymous$$eypad6)) {
num=num+"6";
}else if (Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.$$anonymous$$eypad7)) {
num=num+"7";
}else if (Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.$$anonymous$$eypad8)) {
num=num+"8";
}else if (Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.$$anonymous$$eypad9)) {
num=num+"9";
}else if (Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.$$anonymous$$eypad0)) {
num=num+"0";
}
}
else {...}
Num.text=num;
}
Your answer
Follow this Question
Related Questions
how to connect my Health to my UI 1 Answer
Text doesn't change with string C# 1 Answer
How to print variable? (C#) 1 Answer
Best way to attatch text to text script c# 1 Answer
ui Text not responding to collider 1 Answer