Есть OnDrop и OnDrag в EventTrigger. В методе OnDrag позиции объекта присваивается - Дизайн
Аноним
7/15/2021, 10:48:31 AM
Ответов:
Есть OnDrop и OnDrag в EventTrigger. В методе OnDrag позиции объекта присваивается

позиция курсора. Но при OnDrop вызывается метод у объекта которому присваевается позиция кнопки мыши т.к. он закрывает курсор. Как это можно исправить?

Ответы (28)

Аноним
7/15/2021, 10:53:12 AM

Что-то я не очень понял в чем проблема, что есть "позиция кнопки мыши" и почему курсор закрыт. Можете как-то иначе описать или продемонстрировать? А то уже четвертый раз и никто вам не отвечает)

Аноним
7/15/2021, 11:00:40 AM

когда начинаете драг, отключите raycast target у объекта, который потащили, а при отпускании кнопки, включите назад

Аноним
7/15/2021, 11:10:45 AM

Это где?

Аноним
7/15/2021, 11:13:05 AM

у объекта компонент Image, там чекбокс

Аноним
7/15/2021, 11:43:06 AM

Не работает

Аноним
7/15/2021, 11:44:53 AM

Сделал время подождать одну секунду после бросания и потом поставить raycasttarget true. Всё равно никак

Аноним
7/15/2021, 11:47:26 AM

а можно кода чуть чуть, что происходит в он драг и он дроп?

Аноним
7/15/2021, 11:48:03 AM

https://pastebin.com/kJZY9VGp

Аноним
7/15/2021, 12:18:49 PM

SetStateRaycast - точно в список попадает объект который тащите, а не все сразу?

Аноним
7/15/2021, 12:24:53 PM

Туда попадают все компонены image в слоте

Аноним
7/15/2021, 12:35:03 PM

тогда есть подозрение, то что в OnDrop в if не выполняется, так как canChangeSlotID == index

Аноним
7/15/2021, 12:36:34 PM

По идее index не должен быть равен canChangeSlotID. Иначе это значит что слот с id попал на этот же слот

Аноним
7/15/2021, 12:39:33 PM

ну это по идее, а по коду и на видосе они равны, на сколько я могу судить

Аноним
7/15/2021, 12:40:03 PM

В этом и проблема. Они не должны быть равны

Аноним
7/15/2021, 12:50:29 PM

public void OnPointerEnter() { if(inventory.isDrag) inventory.canChangeSlotID = index; } а вот это отрабатывает? Тут же вы хотите как раз получить айдишник слота на который дроп идет?

Аноним
7/15/2021, 12:52:42 PM

Хороший вопрос. Сейчас посмотрю

Аноним
7/15/2021, 12:53:30 PM

Вызывается

Аноним
7/15/2021, 12:55:51 PM

ну тогда получается в нем и проблема, вы тащите один слот и когда заходите на другой - isDrag = true и вы тут же присваиваете canChangeSlotID айдишник слота в который хотите сделать дроп

Аноним
7/15/2021, 1:00:10 PM

что вы начали тащить и куда сделали дроп проще отслеживать через EventSystems.PointerEventData eventData, она вроде как по дефолту в эти методы передается

Аноним
7/15/2021, 1:01:21 PM

Я изначально их и использовал. Но этот баг появился и сделал через EventTrigger

Аноним
7/15/2021, 1:01:29 PM

Не понял

Аноним
7/15/2021, 1:07:35 PM

ну если я правильно понимаю что и когда вызывается, то происходит следующее Вы начинаете тащить слот и когда затаскиваете его поверх другого слота, OnPointerEnter() срабатывает на последнем и inventory.canChangeSlotID получает его индекс. Затем вы отпускаете кнопку мыши и отрабатывает OnDrop опять же на слоте, который внизу и при сравнении canChangeSlotID и его индекса - они равны

Аноним
7/15/2021, 1:07:37 PM

То есть я сразу сую в слот и отпускаю его? В один кадр?

Аноним
7/15/2021, 1:20:58 PM

ну может не совсем так. В любом случае, я бы рекомендовал все таки разобраться с eventData, там вроде бы не так муторно из быстрых решений, можно попробовать завести переменную, где будете хранить индекс объекта, который начали тащить, сохранять ее в OnDragStart например и сравнивать canChangeSlotID уже с ней, по идее если мы с вами правильно выявили проблему, всё заработает

Аноним
7/15/2021, 1:21:46 PM

Так index это и есть этот слот

Аноним
7/15/2021, 1:27:05 PM

этот - это который мы тащим?

Аноним
7/15/2021, 1:31:16 PM

Не работает

Аноним
7/15/2021, 1:39:58 PM

ну боюсь больше я особо ничего не расскажу, тут только дебажить и ловить, в какой момент изменяется inventory.canChangeSlotID и на какое значение

Похожие вопросы по теме Дизайн

Аноним
8/15/2021, 10:03:43 AM
Ответов: 23
Всем привет, помогите пожалуйста, у меня есть лист который содержит в себе

класс, а в классе 2 публичные переменные типа string и int, как мне получить номер класса в листе у которого наибольшее значение int?

B1g_Mac
8/22/2021, 7:58:47 PM
Ответов: 18
Господа, всех приветствую ! Интересует следующее: как правильно начинать осваивать Unity ?

Сначала пройти отдельно базовый курс по C# или попутно учить его осваивая общий курс Unity ? Опыт программирование имеется если что. Благодарен за ответы.

Аноним
8/9/2021, 8:02:25 PM
Ответов: 21
Люди, а объекты на сцене именовать в стиле PascalCase?
Algok17
8/10/2021, 6:29:13 PM
Ответов: 23
Привет. В webgl при переходе в полноэкранный режим и обратно появляется ползунок

прокрутки страницы и размер приложения остаётся полноэкранным. Как пофиксить?

Algok17
8/3/2021, 10:53:34 AM
Ответов: 22
Привет. Понадобилось мне изменить код инпут филда text mesh pro но так

как скрипт лежит в Library\PackageCache\[email protected]\Scripts\Runtime, юнити его постоянно перезаписывает. Как с этим бороться?

Аноним
7/11/2021, 3:56:35 PM
Ответов: 21
Как передать ссылку на переменную в другой скрипт, что бы по прежнему

переменную можно было настраивать в Unity?

R0tmayer
7/22/2021, 1:54:00 AM
Ответов: 24
И я думаю а может фрукты не уничтожать, а просто выключать? Так

наверное будет более производительнее?

Аноним
8/31/2021, 10:37:41 AM
Ответов: 22
Народ тут есть люди корые шарят в дополненной реальности ?
AnderX003
7/27/2021, 4:38:39 PM
Ответов: 21
у меня в начале игры асинхронный метод достаёт из постоянной памяти рекорд

и при окончании должен обновить текст на сцене с этим рекордом, но юнити пишет что изменить этот текст можно толдько из основного потока. как тогда лучше сделать?

Аноним
8/12/2021, 12:35:46 PM
Ответов: 16
У меня вопрос. Как вы живёте с тем что throw new в

Unity не завершает приложение? как в том же чистом C# ? Вы после throw new потом суёте Application.Quit; ? В местах где нужно именно остановить выполнение приложения