Drop Policy
Drop policy отвечает на простой вопрос: что делать, если игрок отпустил предмет не туда, куда его можно положить напрямую.
Например:
- слот занят
- слот не подходит по правилам
- в слоте уже полный стек
- предмет отпустили не на слот, а на область инвентаря
Основные варианты
| Настройка | Что делает |
|---|---|
Reject |
Отклоняет перенос. Предмет возвращается туда, откуда его взяли. |
FindAlternative |
Ищет другой подходящий слот. |
Swap |
Пробует обменять переносимый предмет с предметом в занятом слоте. |
Если слот занят
| Policy | Поведение |
|---|---|
Reject |
Ничего не переносится. |
FindAlternative |
Система ищет другой слот, куда предмет можно положить. |
Swap |
Система пробует обменять предметы местами. |
Если выбранный слот подходит, policy не мешает переносу: предмет кладётся в этот слот.
Если предмет отпустили на область инвентаря
Когда игрок отпускает предмет не на конкретный слот, а на область инвентаря, система сама ищет подходящее место.
Для этого используется PlacementCandidateOrderer:
| Orderer | Поведение |
|---|---|
Natural |
Использует естественный порядок слотов. |
MergeFirst |
Сначала пробует объединить со стеками. |
EmptyFirst |
Сначала пробует пустые слоты. |
MergeOnly |
Пробует только объединение со стеками. |
EmptyOnly |
Пробует только пустые слоты. |
Если игрок отпустил предмет прямо на конкретный слот, сортировка не используется: сначала проверяется выбранный слот.
Частичный перенос
PartialTransferMode определяет, можно ли перенести только часть предметов из стека.
| Значение | Поведение |
|---|---|
Allow |
Переносит столько, сколько помещается. Остаток возвращается обратно. |
RequireFull |
Если весь стек не помещается, перенос отменяется. |
Это применяется к одной записи переноса. Если игрок переносит несколько выбранных предметов, неудача одного предмета не отменяет уже успешные переносы предыдущих предметов.
Поиск другого слота внутри того же инвентаря
AllowSameInventoryAlternativePlacement важно при перемещении предмета внутри одного и того же инвентаря.
Если настройка включена, то при drop на занятый слот система может поискать другой свободный слот в этом же инвентаре.
Если настройка выключена, такой drop не будет превращаться в “найди куда-нибудь ещё”. Предмет останется на месте, если выбранный слот не подходит.
Swap
Swap нужен для обмена двух предметов местами.
Он срабатывает только для одного переносимого предмета и конкретного занятого слота. Если игрок тащит несколько предметов на один занятый слот, batch-swap отклоняется до изменений.
Что выбрать
| Нужно поведение | Выберите |
|---|---|
| Строго класть только в выбранный слот | Reject |
| Разрешить “положи куда-нибудь подходяще” | FindAlternative |
| Разрешить обмен с занятым слотом | Swap |
| Разрешить перенос части стека | PartialTransferMode.Allow |
| Запретить частичные переносы | PartialTransferMode.RequireFull |
См. также: