以下代码有问题吗? Debug
打印右chosenScenario
,但无论我测试哪个选项(1,2,3,4),它都不会在switch
块中显示...
我在做些傻事吗?
void Awake()
{
Setup();
}
void Setup()
{
// Retrieve the user's selected scenario through player preference log.
string selectedScenario = PlayerPrefs.GetString("selectedScenario");
int chosenScenario = PlayerPrefs.GetInt("chosenScenario");
// Print some useful information.
Debug.Log("Selected Training Scenario is " + selectedScenario + " which is scenario number " + chosenScenario);
switch (chosenScenario)
{
case 1:
Debug.Log("Made it here 1");
break;
case 2:
Debug.Log("Made it here 2");
break;
case 3:
Debug.Log("Made it here 3");
break;
case 4:
Debug.Log("Made it here 4");
break;
default:
Debug.Log(chosenScenario);
break;
}
}
答案 0 :(得分:3)
添加:
switch (chosenScenario)
{
case 0:
Debug.Log("Hell, the preference was not saved");
break;
case 1:
Debug.Log("Made it here 1");
break;
.. continue as before ..
你会立即看到你的问题。
关于这一点,
Debug.Log(“选择的场景编号”+ selectedScenario);
我希望您实际拍摄控制台的屏幕截图,并向我们展示输出!
对于像这样的奇怪的控制台问题,需要记住四个关键点
仔细检查控制台调试输出行的来源
单击控制台行,在“底部”中查看更多信息
永远不要打印裸Debug.Log(x)
,而是执行此操作Debug.Log("yo "+x);
不要忘记臭名昭着的“崩溃”gotchya! https://stackoverflow.com/a/34713627/294884
您的问题可能是:
我知道它是4,因为在一个脚本(在此之前运行)我将它设置为4所以我希望看到Made it here 4消息,但没有任何内容打印到控制台
在设置prefs之后总是一直运行“保存”(这只是关于Unity的一些愚蠢的事情)...
PlayerPrefs.SetString(PString, fs);
PlayerPrefs.Save();
这是典型的例程......
private void WritePrefs()
{
List<string> ff = new List<string>();
foreach (Thingy th in Thingies ) ff.Add(th.Info.handyCode);
string fs = String.Join(",", ff.ToArray());
PlayerPrefs.SetString(PString, fs);
PlayerPrefs.Save();
}