Задать вопрос
@Valera_Petrovi4

Как поставить задержку или остановку между вызовами методов из разных скриптов?

Постараюсь объяснить хорошо, без применения своего кода(многим, я уверен, он не понравиться), но в общем. У меня есть 2 скрипта - назовем по ситуации Inventory - 1, Dialogues - 2 -> Inventory хранит в себе соответственно предметы, позволяет перемещаться в меню и т.д, второй скрипт активируется только при использовании какого-либо предмета в инвентаре, важная заметка что использование предмета и какое-либо взаимодействие с диалогом на одну и ту же кнопку, и изменение этого условия нежелательно, в следствие чего в первом скрипте находятся строки :
public Dialogue[] itemsDialogue;
  itemsDialogue[pickedItem].Start();

Поэтому оба скрипта работают одновременно из-за чего случается так, что инпут для конца диалога зачитывается как и использование следующего предмета в инвентаре, следовательно получается цикл пока все предметы не закончатся, если не дай бог один из предметов можно использовать бесконечно. Я попробовал поставить курятину и в ней WaitUntil(ждать конца диалога и затем позволять игроку дальше пользоваться инвентарем), но по неизвестной мне причине, скрипт диалогов начинал глючить от этого. Создание флагов и подобного должного влияния не оказало. Буду благодарен за помощь, спасибо за уделенное внимание
  • Вопрос задан
  • 58 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
GavriKos
@GavriKos Куратор тега Unity
из-за чего случается так, что инпут для конца диалога зачитывается как и использование следующего предмета в инвентаре


Ну тут как будто неправильно отлавливается нажатие клавиши. Например смотрится статус в апдейте без блокирования. Нужен код.

А вообще по хорошему - надо фиксить хотя бы эту часть:
оба скрипта работают одновременно

Обработчик нажатий дожен быть один. Должна быть стейтмашина (мы щас в инвентаре или в диалоге), и пока управление находится в диалоге и диалог работает - никакие клавиши не должны слушаться в инвентаре.
Ответ написан
Комментировать
@SWA512
Gamedev
А простой WaitForSeconds()? Пол секунды задержка должна помочь.
Ответ написан
@Valera_Petrovi4 Автор вопроса
Нежданно и негаданно я решил проблему совмещением WaitUnil и WaitForSeconds(и почему-то на этот раз диалоги не заглючили), я просто экспериментировал и делал все возможное потому что многое уже я попробовал, но большое вам спасибо за вашу помощь
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы