Моя клавиша не работает в C # - PullRequest
0 голосов
/ 14 мая 2018

У меня проблемы с поиском проблемы в моем коде. Когда я возвращаюсь в Unity и нажимаю кнопку play, текстовая игра запускается в сцене «Wake Up», как было указано. Тем не менее, игра не реагирует на нажатие любых клавиш. Сцена никогда не меняется, и она остается в «Пробуждении», если я вручную не перехожу на вкладку sNextHeading и не набираю другое имя сцены. Например, я набираю «Проверить сотканную корзину», и эта сцена загружается. Я знаю, что все мои сцены работают, но они просто не реагируют на нажатия клавиш. Я пересмотрел свои лекции в школе, и они выглядят одинаково. Должно быть, я что-то упускаю из виду и надеюсь, что кто-то может указать мне правильное направление.

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!")
    };

}

}

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Хорошо, поэтому я пробовал все полезные варианты, которые все предложили, и я нашел решение своей проблемы. Мои ключевые слова, которые я пытаюсь найти, не соответствуют тому, что я установил в массиве. Например, «Чаша» против «Чаша». Заголовок, с которым я проверяю, не соответствует заголовку, который я создал. Однако я записал все эти возможные исправления на случай, если у меня возникнут проблемы в будущем. Еще раз спасибо!

0 голосов
/ 14 мая 2018

Я думаю, sCurrHeading на самом деле null, когда вы запускаете игру: в следующем фрагменте кода говорится:

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

Изменение на

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

может помочь.

Поскольку это null, все эти проверки, такие как if (sCurrHeading == "Wake Up"), не пройдут, и операторы else тоже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...