@Pavel2345

Как вернуть переменную?

Знаю вопрос не сложный, но меня поставил в тупик ... Как вернуть переменную на примере скорости передвижения объекта? Допустим есть переменная float speed = 5; В методе Run()  она и будет 5. В методе Walk() хочу чтобы она была 3. По возвращению к методу Run() снова 5. Но можно ли сделать как-нибудь не привязываясь к числам?
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
Сохраняй старое значение в какую-нибудь временную переменную и возвращайся к нему, когда наступило какое-то новое событие.

Если событий, которые могут перезаписывать много - можно попробовать в стек писать.

В твоём случае я бы сделал две отдельные переменные - скорость ходьбы и скорость бега.
А актуальную скорость определял бы через свойство, в котором будет условие наподобие "если текущее состояние - бег, то вернуть скорость бега. Иначе скорость ходьбы"
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@rPman
Ниже сказанное, не относится конкретно к unity, но для всех любых других способах реализации этой задачи.

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

Логичнее и красивее для реализации, в классе, описывающем персонажа (а наверное лучше базового объекта живых существ в игре, ведь теми же свойствами могут обладать и монстры) определить состояние - ходьба, бег (а в будущем можно будет добавить к примеру - красться) и отдельно переменная - скорость в процентах либо boolean переменная - движение. Для каждого состояния класс должен описывать (виртуальные методы. возвращающие значение) скорость, с которой персонаж может двигаться соответственно ему текущему состоянию. И главное, текущая скорость это не переменная, а метод, который будет проверять состояние и возвращать вычисленную скорость.

Да, это очень не эффективно, каждый раз, при запросе скорости, ее заново вычислять, но если все изменения состояний и переменных, участвующих в вычислении этой скорости, менять так же методами (или геттером/сеттером), то в этих методах можно вызывать метод вычисления скорости а основной метод пусть возвращает сохраненное значение (читай кешировать вычисление скорости и отслеживать ее изменение)
Ответ написан
Комментировать
freeExec
@freeExec
Участник OpenStreetMap
Две переменный, как тут советуют, это хороший подход.
Но я бы выбрал путь коэффициента снижения/увеличения для ходьбы/бега.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы