Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我的按键在C语言中不起作用_C#_Visual Studio_Unity3d - Fatal编程技术网

C# 我的按键在C语言中不起作用

C# 我的按键在C语言中不起作用,c#,visual-studio,unity3d,C#,Visual Studio,Unity3d,我很难在编码中找到问题。当我回到Unity并点击play时,基于文本的游戏会按照指示在唤醒场景中启动。然而,游戏对任何按键都没有反应。除非我手动转到sNextHeading选项卡并键入不同的场景名称,否则场景永远不会更改,并保持唤醒状态。例如,我键入Check Woven Basket并加载场景。我知道我所有的场景都很有效,但它们只是对按键没有反应。我在学校里又看了一遍我的讲座,它们看起来一模一样。我一定忽略了什么,我希望有人能给我指出正确的方向 Page[] aBook; public st

我很难在编码中找到问题。当我回到Unity并点击play时,基于文本的游戏会按照指示在唤醒场景中启动。然而,游戏对任何按键都没有反应。除非我手动转到sNextHeading选项卡并键入不同的场景名称,否则场景永远不会更改,并保持唤醒状态。例如,我键入Check Woven Basket并加载场景。我知道我所有的场景都很有效,但它们只是对按键没有反应。我在学校里又看了一遍我的讲座,它们看起来一模一样。我一定忽略了什么,我希望有人能给我指出正确的方向

Page[] aBook;

public string sPrevHeading;
public string sCurrHeading;
public string sNextHeading = "Wake Up";

void Start()
{

    BindBook();
    RenderStory();
}

void Update() //Input Keys Don't Work
{ 
    if (Input.GetKeyDown(KeyCode.W))
    {
        if (sCurrHeading == "Wake Up")
        {
            sNextHeading = "Check Woven Basket";
        }
    }
    else if (Input.GetKeyDown(KeyCode.D))
    {
        if (sCurrHeading == "Wake Up")
        {
            sNextHeading = "Check Door";
        }
        else if (sCurrHeading == "Pick Up")
        {
            sNextHeading = "Drink Milk";
        }
    }
    else if (Input.GetKeyDown(KeyCode.B))
    {
        if (sCurrHeading == "Wake Up")
        {
            sNextHeading = "Check Bowl";
        }
    }
    else if (Input.GetKeyDown(KeyCode.P))
    {
        if (sCurrHeading == "Bowl")
        {
            sNextHeading = "Pick Up";
        }
        else if (sCurrHeading == "Pick Up")
        {
            sNextHeading = "Pour Milk";
        }
    }
    else if (Input.GetKeyDown(KeyCode.Y))
    {
        if (sCurrHeading == "Drink Milk" ||
            sCurrHeading == "Pour Milk")
        {
            sNextHeading = "Wake Up";
        }
    }
    else if (Input.GetKeyDown(KeyCode.N))
    {
        if (sCurrHeading == "Drink Milk" ||
            sCurrHeading == "Pour Milk")
        {
            sNextHeading = "Thank You";
        }
    }

    RenderStory();
}

void RenderStory()
{
    if (!string.IsNullOrEmpty(sNextHeading))
    {
        for (int nPage = 0; nPage < aBook.Length; nPage++)
        {
            if (sNextHeading == aBook[nPage].Heading)
            {
                sCurrHeading = sNextHeading;
                sNextHeading = "";

                Debug.Log(aBook[nPage].Body);
            }
        }
    }
}

void BindBook()
{
    aBook = new Page[]
    {
        new Page("Wake Up", "(Wake Up)\nCheck the [W]oven Basket, [B]owl, or check the [D]oor?"),
        new Page("Check Woven Basket", "(Woven Basket)\n[X] to return to previous step."),
        new Page("Check Bowl", "(Check Bowl)\n[P]ick up bowl of mile or [X] to return."),
        new Page("Check Door", "(Check Door)\n[X] to return to previous step."),
        new Page("Pick Up", "(Pick Up)\n[P]our out the milk, [D]rink the liquid or [X] to return to previous step."),
        new Page("Pour Milk", "(Pour Milk)\nWin Play again [Y]es or [N]o?"),
        new Page("Drink Milk", "(Drink Milk)\nLose Play again [Y]es or [N]o?"),
        new Page("Thank You", "(Thank You)\nThank you for playing!")
    };

}
}

我认为当你开始游戏时,仓促标题实际上是空的:它在下面的代码片段中这样说:

public string sCurrHeading;
public string sNextHeading = "Wake Up";
改成

public string sCurrHeading = "Wake Up";
public string sNextHeading;
也许会有帮助


因为它是空的,所有这些检查,比如如果匆匆标题==唤醒,都会失败,其他语句也会失败。

好吧,所以我一直在尝试大家建议的所有有用的选项,我找到了解决问题的方法。我试图搜索的关键字与我在数组中设置的关键字不匹配。例如,碗与检查碗。我检查的标题与我创建的标题不匹配。然而,我写下了所有这些可能的修复方法,以防将来出现问题。再次感谢你

如果在If Input.getkeydownkycode.W上设置断点,它会被命中吗?什么调用更新?@Richard应该。请确保您的类派生自monobhavior并附加到场景中的游戏对象。@IanH。当我发布这个问题时,我确实忘记了将该部分复制到代码中。然而,它确实源于单一行为,并且是正确连接的。