Hello all!
I am in need of some help, for the past two or three days I have been pulling my hair out on a parse issue.
To give you a quick run down, I am trying to work on a Rank system. Basically, the game connects to a database, gets the data so that I can set the rank image based off of how much XP a player has. I.E if the player has over 1000XP but less than 2000 he will be at rank 3 for example. The data in the database is text. I am trying to convert it to a int.
I can get and set the data no problem, the connection works and I can see the value in the inputfield text when I pause the game. So I know its working. However, I keep getting this error: “FormatException: Input string was not in the correct format System.Int32.Parse” we all know how it ends. I even added a debug.log and it isn’t helping me at all. I have tried so many variations of code from my several days of googling. I found a lot of topics about this issue, but nothing exactly as to what I am facing. I have checked the text of the inputfield and there are no crazy characters or spaces or unknown variables.
Please excuse the mess, I am not the best coder, and I have gone through so many variations just to try and get it to work, before I can clean it up.
void OnJoinedLobby()
{
Debug.Log("We joined the lobby.");
StartCoroutine(Fade(LobbyState.MainMenu));
ChangeWindow(2, 1);
getrank();
// getrank();
//Data 1 i s XP for now
// int xpdata2 = Int.
// if (xpdata2 > 1)
// {
// PlayerRank.SetRank1();
// }
// GetFromServer.Data1.text = RANKSXP.ToString();
// GetFromServer.Data2.text = RANKSXP.ToString();
// GetFromServer.Data3.text = RANKSXP.ToString();
}
public static Image Rank1;
private static LoginPro_GetFromServer GetFromServer;
public static void getrank()
{
// Rank1 = GameObject.FindWithTag("RankImage").GetComponent<RawImage>();
Rank1 = GameObject.FindWithTag("RankImage").GetComponent<Image>();
GetFromServer = GameObject.FindWithTag("RanksTagGet").GetComponent<LoginPro_GetFromServer>();
GetFromServer.GetFromServer();
string ranktest = GetFromServer.Data1.text.ToString();
try
{
int xpdata2 = int.Parse(GetFromServer.Data1.text);
if (xpdata2 >= 100)
{
Rank1.sprite = Resources.Load<Sprite>("Bronze0") as Sprite;
}
{
}
}
catch
{
Debug.Log(">" + GetFromServer.Data1.text + "Ranktest: " + ranktest.Length);
}
//int xpdata2 = int.Parse(GetFromServer.Data1.text);
}
Please also excuse some of the commented failure tests. Its supposed to set the image based on the XP value given from the database. I have also made sure to set the inputfield as integer number. I have tried both. I have even tried custom. I have tried TryParse. Any help would be appreciated. Thank you guys so much!
I am sorry I had to ask a question at all, but I am really lost.