Когда я работала над проектом "Подводный мир", был момент, когда мне захотелось добавить в игру инвентарь - нижний, который бы скрывался, и верхний инвентарь, скрывающийся в сумке.
С нижним инвентарем у меня не было проблем, выглядел он вот так:
Второй инвентарь должен был скрываться внутри сумки, а при клике на нее должен был разворачиваться.
Когда я начала искать информацию о том, как сделать такой инвентарь, мне попалось несколько способов:
1. инвентарь на одном уровне, элементарный, сделан на анимации;
2. инвентарь, сделанный с помощью массивов и анимации.
Первый способ был простым, а второй сложным, на освоение которого мог уйти не один день.
Казалось бы, можно было взять первый вариант, но игра была построена так, что нужно было путешествовать между уровнями. Поэтому мне оставалось или полностью отказаться от инвентаря, или изучать массивы.
К тому времени мною был нарисован сам инвентарь в графическом редакторе Sai, и выглядел он так:
Я стала изучать массивы, конечно же, потратив на это время.
Тогда я столкнулась с массивами практически впервые. Не удивительно, что у меня возникли проблемы после того, как я сделала основные действия.
Каждый раз, когда я переходила на новый уровень, инвентарь дублировался. То есть, если, например, на первом уровне в инвентаре было 12 ячеек, то на следующем уровне уже 24 и так далее. И нагрузка на игру становилась все больше и больше, все начинало тормозить.
Вот, я подбираю предметы на гиф ниже, и хотя я собирала по одному предмету, в инвентарь сохранилось по три штуки каждого. Пока я дошла в игре до этого магазина, мне пришлось пройти два уровня. И с каждым уровнем ячеек становилось все больше.
Я долго мучилась с этим вопросом, искала ответ, но ничего не находила.
В итоге, методом тыка, мне удалось найти ответ, который был для меня неожиданным.
Суть в том, что надо slot (объект, который обозначает саму ячейку) и item (объект, который должен создаваться в ячейке с кадрами предметов) сделать глобальными.
В Construct 2 нужно выделить нужный объект и в левой основной панели "Properties" в "Object type properties" поставить значение "Yes" напротив "Global". По умолчанию, у всех объектов там стоит "No". Если поставить "Yes", то объект не уничтожается при переходе с уровня на уровень.
После этого предметы перестали подбираться по несколько раз, так как ячейки с уровня на уровень переходили без дублирования.
К сожалению, эта игра так и осталась на этапе проекта, но я не расстроена, потому что он подарил мне опыт. Зато другие мои проекты дошли до реализации, например, тот же кликер "Маятник".
Надеюсь, если кто-то столкнется с проблемой повторяющихся ячеек в инвентаре, то эта статья им поможет.
На моем канале есть разные статьи, но в основном обсуждается механика и графика для игр на Construct 2 и Construct Classic, например, есть статья о том, как сделать сумку с картой.