Найти тему
47 подписчиков

Счётчик действий


Как всегда в какой-то момент меня начинает утомлять писать одни и те же конструкции по 100 раз, и я выношу их в миниатюрные скрипты. У вас бывало такое, что вы хотите чтобы что-то происходило по множественному нажатию какой-то кнопки или какому-то действию? Допустим очень часто хочется чёт такое для дебага, чтобы не сидеть и не ждать пока честно пройдётся что-то, а сделать такой чит. Собственно вот простенький пример класса для этого дела. Пример его применения что-то вроде такого

private ActionCounter _skipLevelAction;
private void Awake()
{
_skipLevelAction = new ActionCounter(3, 0.5f);
_skipLevelAction.ResolveAction += DebugEndLevel;
}

private void Update()
{
_skipLevelAction.Process(Time.deltaTime);
if (Input.GetKeyDown(KeyCode.RightArrow) || Input.GetMouseButtonDown(0))
{
_skipLevelAction.Action();
}
}

Собственно делается условие что считается экшеном. По нему вызывается событие что экшен произошёл. А процесс это место обработки этого дела. Конечно лучше сделать конструкцию по безопаснее, с защитой от дурака в Action, чтобы счётчик обнулялся по таймштампу последнего обновления (так как иначе в этой реализации есть риск, что кто-то не вызовет процесс и он будет срабатывать всегда), но это так. Простенький пример на скорую руку.

#сниппет
1 минута