Zac Howarth Ответов: 1

Значения атаки в игре не работают должным образом


заранее прошу прощения за то, что не знаю этого сообщества. я новичок в этом во многих отношениях.

я создал игру для игры в кости на c# и unity, и все работает нормально, за исключением того, что когда игрок 2 атакует игрока 1, значение атаки не то, что должно быть. и я думаю, что это в этом кусочке кода. но 2 часа возни с ним не дали никаких новых знаний. любая помощь будет очень признательна. если требуется больше кода, пожалуйста, спросите

if (PhaseName == "Player1AttackGet" || PhaseName == "Player2AttackGet")
        {
            DiceS1 = Random.Range(1, 7);
            DiceS2 = Random.Range(1, 7);
            if (PhaseName == "Player1AttackGet") {
                Player1ATK = DiceS1 + DiceS2;
                Player1ATK = Player1ATK - Player2AddedDEF;
                CombatP1On = true;
            }
            if (PhaseName == "Player2AttackGet") 
            {
                Player2ATK = DiceS1 + DiceS2;
                Player2ATK = Player2ATK - Player1AddedDEF;
                CombatP2On = true;
            }
        }
        RollDiceButton.interactable = false;
        NextPhaseButton.interactable = true;
    }


Что я уже пробовал:

я попробовал немного передвинуть фигурную скобку

Bryian Tan

Что?? Я предполагаю, что проблема находится на этой линии? Может быть, это должно быть минус
Игрок1Аддеддеф ?

 Player2ATK = Player2ATK - Player2AddedDEF;

Zac Howarth

Эй, извини, что я это изменил, и это не решило мою проблему. немного увлекшись этим сценарием, я вернулся к оригиналу и забыл изменить эту очевидную ошибку, прежде чем задать свой вопрос здесь. работать допоздна и допоздна возиться с кодом не дает никаких хороших результатов

F-ES Sitecore

Мы ничем не можем помочь, так как не знаем, какой должна быть ценность атаки, то есть чего вы ожидаете, и вы не объяснили, чем она отличается от того, что вы получаете. Мы также не знаем, что такое Player1AddedDEF и так далее.

Используйте отладчик, чтобы шагать по коду строка за строкой, проверяя значения переменных, когда вы идете, чтобы понять, что происходит.

Zac Howarth

lol спасибо за все советы по использованию отладчика. я знаю, что это такое, как им пользоваться, и я действительно шел строчка за строчкой, снова и снова. я подумал, что мне нужно будет показать больше кода, но есть несколько запущенных скриптов, и я не хочу ставить все это здесь. я ценю ваш совет, но я просто буду продолжать пытаться самостоятельно. Пожелай мне удачи!

1 Ответов

Рейтинг:
0

Patrice T

Цитата:
я попробовал немного передвинуть фигурную скобку

Случайные изменения в коде - это не очень хорошее поведение, вы бы предпочли использовать отладчик, чтобы увидеть, что делает ваш код.

Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик-Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]
Отладка кода C# в Visual Studio-YouTube[^]
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.