|
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,225
|
|
Система крафта, схема проверки и хранения "чертежей"07.01.2026, 19:00. Показов 1453. Ответов 21
Поделитесь други, кто какие инструменты шарпа использовал для этой цели. и какова основная схема проверки и хранения "чертежей" может быть.
заранее спасибо!
0
|
|
| 07.01.2026, 19:00 | |
|
Ответы с готовыми решениями:
21
2d чертеж в unity Хранение данных |
| 08.01.2026, 00:32 | |
|
Gammister,
На мой взгляд struct это самый простой способ для хранения рецептов. Тут зависит от того как вы в принципе организуете инвентарь. И каким вы видите крафт. Референсы в студию. Или тех.задание хотя бы. Чтоб было от чего отталкиваться.
0
|
|
|
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,225
|
|
| 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,225
|
|
| 09.01.2026, 16:59 [ТС] | |
|
спасибо огромное! разбираю ваш взгляд на решение задачи. правда структуры не вижу нигде, как ранее было предложено под хранение рецептов. это умышленно и переосмыслено, или для упрощения?
0
|
|
| 09.01.2026, 18:27 | ||
|
Gammister,
1
|
||
|
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,225
|
||||||
| 18.01.2026, 14:28 [ТС] | ||||||
|
пытаюсь более универсальную систему написать и уперся в сам метод проверки.
хотелось бы, чтоб пробегаясь по рецептам, он добавлял в лист возможные для создания объекты, которые возможно собрать с того, что есть на рабочем столе. вроде работает, но не совсем как нужно. можете помочь подправить? вот скрипт для тестирования в инспекторе:
дело в том, что на рабочем столе тоже может быть разное количество ингредиентов, а небольших рецептов, может собраться два из того, что на столе. в общем каша какая-то. может нужно разбить на отдельные методы по меньше, но как... пока не получается. ![]() Добавлено через 1 минуту а так же после проверки рецептов, выдает ошибку о выходе за пределы массива.
0
|
||||||
|
298 / 260 / 108
Регистрация: 26.10.2012
Сообщений: 810
|
||||||
| 20.01.2026, 13:59 | ||||||
1
|
||||||
|
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,225
|
|
| 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,225
|
|||||||
| 21.01.2026, 02:17 [ТС] | |||||||
|
разобрался!
![]() Добавлено через 12 минут
0
|
|||||||
|
298 / 260 / 108
Регистрация: 26.10.2012
Сообщений: 810
|
||||||
| 21.01.2026, 07:57 | ||||||
|
Блин, забыл что метод Except не учитывает повторения.
Тогда вот ручное определение применимости набора предметов для рецепта.
1
|
||||||
|
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,225
|
||||||
| 21.01.2026, 12:52 [ТС] | ||||||
|
благодарю вас други !!
еще хочу добавить, что фиксированный размер itemsCraft = 5, это все условно и он не будет постоянным и будет листом скорее всего. это просто для хранения добавляемых ингредиентов на верстак. фиксированный размер будет уже у UI панельки для ингредиентов. некоторые ячейки могут быть пустыми и порядок видимого на ней не будет учитываться. просто сам лист имеющихся буду сортировать по его прайсу, а на экране они могут добавляться пользователем в любом порядке. и будет скорее всего = 9. но это уже визуальный момент. к нему скоро подойду. конечный результат вижу примерно так: на панель (3х3 (возможность стакаться для экономии пространства вообще будет шикарно)) добавляются ингредиенты из инвентаря в любом порядке, и при совпадении рецептов (их может быть не один), в отдельном месте показываются возможные предметы. при наведении курсора на один из них, рецепты пересчитываются с учетом того, который под которым курсор, и те, которым уже не хватает ингредиентов, становятся не активными. это все еще до создания делается. ну и конечно убирать из доп. панели предметы, которым уже не хватает ингредиентов. такая вот амбициозная задумка. ![]() Сам базовый класс айтема вот такой:
0
|
||||||
|
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,225
|
|
| 23.01.2026, 15:40 [ТС] | |
|
0
|
|
|
298 / 260 / 108
Регистрация: 26.10.2012
Сообщений: 810
|
|
| 24.01.2026, 12:17 | |
|
Замените ingredients на ingredientCount .
1
|
|
|
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,225
|
||||||||||||
| 26.01.2026, 18:59 [ТС] | ||||||||||||
но не совсем так, как нужно.например, для создания монеты нужно 2 куска руды, а на столе руды 4. но четырех кусков так же достаточно для создания слитка. по идее должно выдать две монеты и слиток. пока вот так:
мне тут подсказали в телеге в группе по Unity использовать рекурсию, я на своем коде по пробовал :
но как-то в эту сторону возможно двигаться...
0
|
||||||||||||
|
298 / 260 / 108
Регистрация: 26.10.2012
Сообщений: 810
|
||||||
| 27.01.2026, 09:17 | ||||||
1
|
||||||
|
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,225
|
|
| 27.01.2026, 16:25 [ТС] | |
|
фантастика!
спасибо большое ! добавление в список префабов по числу я уже сам сделаю. теперь начну визуальную часть мостырить. разбираюсь, как этот метод работает в деталях, так как словари на практике еще не использовал. вопросик один. зачем totalCount сразу присваивать максимальное значение диапазона?
0
|
|
|
298 / 260 / 108
Регистрация: 26.10.2012
Сообщений: 810
|
|
| 28.01.2026, 07:38 | |
|
Чтобы его значение не оказалось ниже всех локально получаемых переменных count по которым ищется минимум.
1
|
|
|
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,225
|
|||||||
| 28.01.2026, 18:52 [ТС] | |||||||
|
если в таком виде ее вообще можно было реализовать конечно. слегка по говнокодскому. ![]() заранее вам спасибо ! Добавлено через 4 часа 10 минут мой уровень никак пока что не позволяет мне нормально прочитать ваш код и понять где же тут происходит сравнение и по какому критерию сравнивается ![]() я сравнивал по имени, так как класс один и тот же ![]()
вам не трудно расшифровать ? )))
0
|
|||||||
| 28.01.2026, 18:52 | |
|
Помогаю со студенческими работами здесь
20
Хранение данных Хранение диалогов в играх Хранение и использование данных в Unity Работа с изображениями и видео, их хранение. Советы по выбору БД Как организовать хранение информации об игроках? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|