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