|
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,211
|
|
Система крафта, схема проверки и хранения "чертежей"07.01.2026, 19:00. Показов 722. Ответов 15
Поделитесь други, кто какие инструменты шарпа использовал для этой цели. и какова основная схема проверки и хранения "чертежей" может быть.
заранее спасибо!
0
|
|
| 07.01.2026, 19:00 | |
|
Ответы с готовыми решениями:
15
2d чертеж в unity Хранение данных |
| 08.01.2026, 00:32 | |
|
Gammister,
На мой взгляд struct это самый простой способ для хранения рецептов. Тут зависит от того как вы в принципе организуете инвентарь. И каким вы видите крафт. Референсы в студию. Или тех.задание хотя бы. Чтоб было от чего отталкиваться.
0
|
|
|
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,211
|
|
| 08.01.2026, 14:15 [ТС] | |
|
хотя бы примерно, как майнкрафте. в принципе техническая часть инвентаря не очень интересна. сам способ хранения и проверки, сошелся ли рецепт. их ведь может быть много. допустим структура хранит в себе рецепт в каком виде? может быть рецепты хранить уже в классах с набором (массивом) более атомарных элементов в виде структур (ингредиентов).
в ролике CodeMonkey реализовано таким образом, что рецепт собирается по проверке расположения по определенным ячейкам. то есть чтобы собрать меч, ингредиенты нужно расположить вертикально и по середине панели 3х3. но нужно по другому. более универсально. достаточно наличия этих объектов на рабочем столе, что бы стало доступно создание этого объекта. и если объектов больше, проверять на сходство с доступными рецептами. если на плахе объекты из которых можно создать не один объект, а разные, то это должно подсветиться. сам инвентарь сейчас не важен. пока что. интересует, как именно организовать вот эту часть кода. в общем я пока понимаю примерно так: структуры / контейнеры для них (рецепты) / коллекции контейнеров для проверки в цикле / возврат объекта при активации создания. визуал всего этого добра поэтапно обсудим, если возникнут проблемы. пока что интересна сама кодовая основа процесса. логический костяк так сказать. пока что можно имитировать инвентарь можно заполнением массива в инспекторе. для теста. заранее спасибо! Добавлено через 12 минут ну и айтемы конечно же будут производными классами либо под общим интерфейсом, что упростит совместимость, если что
0
|
|
| 08.01.2026, 22:55 | ||||||||||||||||||||||
Сообщение было отмечено Gammister как решение
Решение
Gammister, вижу рецепт как массив айтемов.
а крафт сравнение массива из рецепта с массивом "рабочего стола".
ТОгда вам надо будет отсортировать каким то образом ингредиенты на рабочем столе и в рецепте(хотя бы по алфавиту), чтобы их порядок всегда соответствовал единому стандарту. Это можно добавить в метод private void CheckForRecipe(). Тогда подойдет и пример приведенный в листинге выше. А длина массива, должна соответствовать самому длинному рецепту. и наверное массивы лучше заменить на List<>, чтоб сортировать выло легче.
1
|
||||||||||||||||||||||
|
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,211
|
|
| 09.01.2026, 16:59 [ТС] | |
|
спасибо огромное! разбираю ваш взгляд на решение задачи. правда структуры не вижу нигде, как ранее было предложено под хранение рецептов. это умышленно и переосмыслено, или для упрощения?
0
|
|
| 09.01.2026, 18:27 | ||
|
Gammister,
1
|
||
|
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,211
|
||||||
| 18.01.2026, 14:28 [ТС] | ||||||
|
пытаюсь более универсальную систему написать и уперся в сам метод проверки.
хотелось бы, чтоб пробегаясь по рецептам, он добавлял в лист возможные для создания объекты, которые возможно собрать с того, что есть на рабочем столе. вроде работает, но не совсем как нужно. можете помочь подправить? вот скрипт для тестирования в инспекторе:
дело в том, что на рабочем столе тоже может быть разное количество ингредиентов, а небольших рецептов, может собраться два из того, что на столе. в общем каша какая-то. может нужно разбить на отдельные методы по меньше, но как... пока не получается. ![]() Добавлено через 1 минуту а так же после проверки рецептов, выдает ошибку о выходе за пределы массива.
0
|
||||||
|
293 / 256 / 107
Регистрация: 26.10.2012
Сообщений: 806
|
||||||
| 20.01.2026, 13:59 | ||||||
1
|
||||||
|
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,211
|
|
| 20.01.2026, 17:23 [ТС] | |
|
Спасибо!
жаль, что вы не прокомментировали, что именно этот делает. по идее возвращает совпадающие айтемы, но смущает метод Any. переводится, как любой. и еще... что передавать в этот метод в качестве аргумента? по идее itemsCraft? и где именно его вызывать в моем случае? во внешнем цикле? сейчас штудирую библиотеку линк. там много интересных методов.
0
|
|
| 21.01.2026, 01:59 | |||||||||||
|
Gammister,
Использует базовый класс ItemBase, что позволяет использовать любые предметы-наследники. По умолчанию все ингредиенты равны null.
ingredients.Except(items) - находит ингредиенты из рецепта, которых нет в переданной коллекции items..Any() - проверяет, есть ли такие отсутствующие ингредиенты.Проще говоря: метод возвращает true, если ВСЕ ингредиенты из рецепта присутствуют в предоставленной коллекции. Метод проверяет только наличие ТИПОВ предметов. Если в рецепте нужны 2 одинаковых предмета, а в items только 1 - метод вернет true. Except() удаляет дубликаты.Порядок ингредиентов не важен.
1
|
|||||||||||
|
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,211
|
|||||||
| 21.01.2026, 02:17 [ТС] | |||||||
|
разобрался!
![]() Добавлено через 12 минут
0
|
|||||||
|
293 / 256 / 107
Регистрация: 26.10.2012
Сообщений: 806
|
||||||
| 21.01.2026, 07:57 | ||||||
|
Блин, забыл что метод Except не учитывает повторения.
Тогда вот ручное определение применимости набора предметов для рецепта.
1
|
||||||
|
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,211
|
||||||
| 21.01.2026, 12:52 [ТС] | ||||||
|
благодарю вас други !!
еще хочу добавить, что фиксированный размер itemsCraft = 5, это все условно и он не будет постоянным и будет листом скорее всего. это просто для хранения добавляемых ингредиентов на верстак. фиксированный размер будет уже у UI панельки для ингредиентов. некоторые ячейки могут быть пустыми и порядок видимого на ней не будет учитываться. просто сам лист имеющихся буду сортировать по его прайсу, а на экране они могут добавляться пользователем в любом порядке. и будет скорее всего = 9. но это уже визуальный момент. к нему скоро подойду. конечный результат вижу примерно так: на панель (3х3 (возможность стакаться для экономии пространства вообще будет шикарно)) добавляются ингредиенты из инвентаря в любом порядке, и при совпадении рецептов (их может быть не один), в отдельном месте показываются возможные предметы. при наведении курсора на один из них, рецепты пересчитываются с учетом того, который под которым курсор, и те, которым уже не хватает ингредиентов, становятся не активными. это все еще до создания делается. ну и конечно убирать из доп. панели предметы, которым уже не хватает ингредиентов. такая вот амбициозная задумка. ![]() Сам базовый класс айтема вот такой:
0
|
||||||
|
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,211
|
|
| 23.01.2026, 15:40 [ТС] | |
|
0
|
|
|
293 / 256 / 107
Регистрация: 26.10.2012
Сообщений: 806
|
|
| 24.01.2026, 12:17 | |
|
Замените ingredients на ingredientCount .
1
|
|
|
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,211
|
||||||||||||
| Вчера, 18:59 [ТС] | ||||||||||||
но не совсем так, как нужно.например, для создания монеты нужно 2 куска руды, а на столе руды 4. но четырех кусков так же достаточно для создания слитка. по идее должно выдать две монеты и слиток. пока вот так:
мне тут подсказали в телеге в группе по Unity использовать рекурсию, я на своем коде по пробовал :
но как-то в эту сторону возможно двигаться...
0
|
||||||||||||
| Вчера, 18:59 | |
|
Помогаю со студенческими работами здесь
16
Хранение данных Хранение диалогов в играх Хранение и использование данных в Unity Работа с изображениями и видео, их хранение. Советы по выбору БД Как организовать хранение информации об игроках? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|