【发布时间】:2014-04-22 19:06:12
【问题描述】:
我有一个用于加载某些关卡的字符串数据,在完成关卡后,一些代码应该增加字符串的最后一个字符以正确加载下一个关卡。
例如:
String levelName = "Level_002_001";
完成关卡后,它应该创建一个字符串 = "Level_002_002",它与下面的代码一起工作,直到 "Level_002_009",并且在加载第 10 个关卡时,它会引发错误。
代码:
string sceneName = Application.loadedLevelName;
char[] chars = sceneName.ToCharArray();
int level = chars[chars.Length - 1] - '0';
ManageLevelData.SaveLevel(level, ScoreController.Percentage());
chars[chars.Length - 1] = (char)(((int)'0')+ level + 1);
Application.LoadLevel(new string(chars));
在人类语言中:我将字符串的每个字符分隔在一个数组中,然后取出最后一个 char 并将其转换为 int,然后将其加 1,然后将它们全部粘合在一起。
【问题讨论】:
-
也许是
chars[chars.Length - 1]++?也许ManageLevelData.SaveLevel()不喜欢10 或Application.LoadLevel("Level_002_00:")不好? -
我认为您的回答会在 ascii char 中添加一个 int,并且由于 ascii char 只能达到 9,因此我可能不得不添加另一个 char……不,这两个函数都只是读取一个字符串,据我所知,解析方法是合法的,但感谢您的回答:)
-
看来您想要增加“..._009”并转到“..._010”而不是“..._00:”。代码最终需要在递增“..._009”、“..._999”或“Level_999_999”时处理 textual 数学溢出。我建议解析所有可能参与
level的数字,递增level,然后从整个字符串中重新解析。
标签: string char type-conversion ascii