Интерфейсы МОЖНО использовать тогда когда есть несколько РЕАЛИЗАЦИЙ одной логики.
А ваши примеры на уровне юнити можно даже компонентами решить. А можно и интерфейсами.
А может лучше начать с основ языка? if (GetComponent().sprite = spr1)
Тут синтаксическая ошибка (даже если добавить тип компонента) - и вам компилятор об этом говорит.
А еще делать сравнение через ресурсы - максимально некорректно
Ну конечно по примеру, а не описанию логики, предполагать сложно.
Но что подойдет под пример - и число и элементы массива переводим в строки. true - если все элементы массива есть как подстроки в оригинальной строке.
Но перевод в строки в целом лично мне как идея не нравится.
Словарь\ассоциативный массив\map (ну и прочие варианты коллекции ключ-значение), где ключ - субъект, значение - действие.
Останется только кратко заполнить, тут в помощь средства языка типа рефлексии, аттрибутов (например).
Непонятно в чем вопрос. Куда доступ иметь? Вы пользователь или владелец ресурса.
Со стороны пользователя пароль ничем не защищен - он МОЖЕТ быть доступен в незащищенном виде владельцу сервиса.
А если вы со стороны владельца сервиса/ресурса - то как то у вас заголовок с телом не стыкуется )))
Есть по сути ровно два подхода.
Первый - если вам надо чтобы программа сама разблокировалась - то нужен таймер. Обычно для всяких формочек существует компонент "таймер". Ну и привязываетесь там к времени и по истечению разблокируете форму.
Второй. Программа сама никак ничего не меняет в своем состоянии. Однако при попытке авторизации если время не истекло - то выводится сообщение о блокировке по времени. Тут все проще - вам нужна переменная когда можно в след. раз авторизовываться, и в авторизации сначала сравниваете ее с текущим времнем
Это все относительно и зависит от вашего желаемого темпа роста игрока. Тут же надо балансировать все - и темп выдачи экспы, и влияение уровня на сложность - и как следствие на темп.
Самое простое - возьмите что то из готовых систем - пасфайндер, спешиал, днд и прочее.