在Awake或Start中调用switch语句

时间:2016-02-04 12:13:31

标签: unity3d

以下代码有问题吗? 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;
    }
}

控制台输出的屏幕截图: enter image description here

1 个答案:

答案 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);

我希望您实际拍摄控制台的屏幕截图,并向我们展示输出!

对于像这样的奇怪的控制台问题,需要记住四个关键点

  1. 仔细检查控制台调试输出行的来源

  2. 单击控制台行,在“底部”中查看更多信息

  3. 永远不要打印裸Debug.Log(x),而是执行此操作Debug.Log("yo "+x);

  4. 不要忘记臭名昭着的“崩溃”gotchya! https://stackoverflow.com/a/34713627/294884

  5. 您的问题可能是:

      

    我知道它是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();
        }