Как реализовать Drag and Drop в Unity UI?

  Рет қаралды 15,959

Лавка Разработчика

Лавка Разработчика

Күн бұрын

Поддержи канал, бро!
paypal.me/gamedevlavka - мир
boosty.to/gamedevlavka - рф
И даже криптой (пока только Ethereum):
0x7a53325D1C36Eea7BbE8C6a8D00f2a0efd580e77
Разбиваем визуализацию инвентаря на части, так видео будет короче, и понятнее. И в этой части разберем, такую механику, как Drag and Drop, то есть механику перетаскивания UI элементов. Эта механика может использоваться не только в инвентаре, но и в других местах, поэтому полезно выделить ее в отдельное видео. Данная часть по сути является продолжением цикла видео по созданию инвентаря, но при этом также является самостоятельным видео.
Как сделать инвентарь в Unity. Часть 1. Абстракция ( • Video )
Как сделать инвентарь в Unity. Часть 2. Реализация ( • Video )
Drag and Drop в Unity UI ( • Как реализовать Drag a... )
Как сделать инвентарь в Unity. Часть 3.1. Подготовка к визуализации ( • Video )
__________
Залетай в Таверну Разработчика в телеге, и делись своими траблами в Unity, вместе разбираться будем!
t.me/gamedevtavern
Подписывайся на канал в телеге, или на твиттер, там я публикую коротенькие типсы и практики, которые помогут писать код лучше, понятнее и эффективнее:
Telegram: t.me/gamedevlavka
Twitter: / gamedevlavka
Twitter (личный): / vavilichevgd
__________
0:00 Вступление
0:32 Подготовка UI
4:59 Пишем перемещаемый объект
12:50 Пишем слот
14:05 Подводный камень

Пікірлер: 61
@eveuptime
@eveuptime 2 жыл бұрын
Гендерно-нейтральный коммент, минимум из трех слов, для продвижения канала
@gamedevlavka
@gamedevlavka 2 жыл бұрын
Авторитетный ответ в сопровождении с лайком, для имитации диалога с подписчиком
@Sussland
@Sussland Жыл бұрын
Крутое видео, понятное и именно то, что я искал!
@zdrastepriehali49
@zdrastepriehali49 2 жыл бұрын
блин просто отличный тутор, все сразу получилось!!
@vladisslavss
@vladisslavss 2 жыл бұрын
Отличный урок! Лукас и коммент в поддержку канала !
@design_art_style
@design_art_style 4 ай бұрын
Всё супер с первого раза получилось именно так и нужно объяснять всё по полочкам спасибо большое
@AlexandrFedotov009
@AlexandrFedotov009 2 жыл бұрын
Godlike! очень крутое видео!!! Спасибо)
@brittanymiller8590
@brittanymiller8590 2 жыл бұрын
Красавчик) Лайк и подписка)
@user-vh8oe5cz8h
@user-vh8oe5cz8h 2 жыл бұрын
Спасибо!
@mypaxa003
@mypaxa003 2 жыл бұрын
Очень простая и понятная реализация👍 Но я бы, наверное, ещё подумал по поводу отрисовки предмета поверх слотов. Мне кажется, во многих случаях отключать сетку будет неудобным (при добавлении новых слотов например), но это уже совсем другая история))
@gamedevlavka
@gamedevlavka 2 жыл бұрын
Да, это другая история) однако, отключение сетки все равно можно юзать: добавляешь элемент, включаешь сетку, перестраиваешь, отклбчаешь сетку, можно таскать) можно со слоями запариться, схожу не скажу, что проще, там и так и так есть подводные камни)
@Priboy313
@Priboy313 Жыл бұрын
Отличное видео! От себя хочу добавить, хоть и прошло уже прилично времени, что по наблюдениям если бросить предмет когда курсор не точно над белым квадратом, а рядом, над пустым бортиком, то дроп не сработает и предмет вернётся в стартовую позицию. Я это решил следующим образом: image в слоте сделал полностью прозрачным и увеличил его размеры на ширину spacing в сетке. И сделал ребёнком ещё один image белого квадрата старых размеров, которому отключил рейкаст таргет. Визуально то же самое, но без пробелов в сетке.
@aleksandrrecoba1434
@aleksandrrecoba1434 2 жыл бұрын
Спасибо за урок, можно ли в ближайшем будущем урок по Drag and Drop в Unity 3Д объектов на поле. Как шахматные фигуры в 3Д.
@brunskiy
@brunskiy 2 жыл бұрын
Спасибо
@user-nj8ee1hj8z
@user-nj8ee1hj8z 2 жыл бұрын
Очередное отличное видео. Спасибо.
@dihaneeer
@dihaneeer 2 жыл бұрын
Круто, просто и понятно!
@kokos_kek
@kokos_kek 2 ай бұрын
Пишу от 07.05.24. Если вкратце - отличный видос, нашёл решение своей проблемы, спасибо, снимаю шляпу.
@MoronicSoul
@MoronicSoul 2 ай бұрын
если ты про размеры грида 1800х1100, то просто это суммы размеров ячеек, отступов внутрь контейнера, и наружных отступов ячеек)1800 = 300*5 + 50*4 +100 и 1100 = 300*3+50*2+100. Если ты не про эти размеры то сори что влез и задушнил)
@satilast
@satilast Жыл бұрын
Спасибо. Отлично объяснено. Лайк поставил. Правда я не стал сортировать элементы в группе. Если я правильно понимаю - это работа с массивом и памятью при каждом переносе. Вместо этого в OnBeginDrag запоминал parent (если мы хотим, чтобы он возращался в предыдущий слот в случае промаха) и задавал parent = grid, предварительно выключив GridGroupLayout (раз это внешний элемент по отношению ко всем другим), а на OnEndDrag включал обратно GridGroupLayout и проверял, если родитель grid, то задать родителем предыдущий слот. Всё-таки событие OnDrop произойдет раньше OnEndDrag, поэтому такое условие подойдёт. Его можно применять, если по каким-то причинам не хочется менять порядок самих слотов. Если в чём-то логически ошибся - поправь пожалуйста. Только начинаю изучать Юнити и С#.
@bleach4rever
@bleach4rever 2 жыл бұрын
Спасибо за видео, насчёт темы для видео, я бы посмотрел про таймеры. Вариантов реализаций таймеров много, поэтому я бы хотел узнать с твоей точки зрения, какое решение наиболее практичное.
@gamedevlavka
@gamedevlavka 2 жыл бұрын
Принимается)
@def6141
@def6141 2 жыл бұрын
Спасибо! Очень полезно новичку! Как раз сегодня думал разобраться, как сделать джостик на андроид. Вот теперь понятно куда копать :) Может сделаешь урок по реализации простого джостика для андроид управления персонажем но через InputSystem и Character Controller😁
@WanP1su
@WanP1su 2 жыл бұрын
А бесплатный плагин Joystick Pack с ассет стора не подойдёт?
@gamedevlavka
@gamedevlavka 2 жыл бұрын
Согласен с предыдущим оратором, есть Joistick Pack, который легко кастомизируется. А зачем тебе InputSystem? Он обычно используется, можно было игроку дать настраивать управление, но это больше для ПК/Консоли история, а не про мобилки. Либо я не до конца понял вопрос)
@def6141
@def6141 2 жыл бұрын
@@gamedevlavka Зато я понял немного больше теперь ))) Да видел этот пак. Надо в коде разбираться самому, а когда тебе рассказывают намного проще😊 Я пока не сильно понимаю как правильно двигать персонажа (есть же куча вариантов). А через Joystick Pack и rigidbody.MovePosition у меня почему то персонаж как то дергано двигался. В то время как через wasd было норм
@livingend1638
@livingend1638 2 жыл бұрын
раньше был прямо готовый джойстик для андроида в стандартных ассетах, может и сейчас он там лежит...
@unityrututorials1327
@unityrututorials1327 2 жыл бұрын
@@livingend1638 там он всегда есть и будет. единственное что стандарт теперь надо самому скачивать))))) а новички которые 2020 ставят, даже и не подозревают о наборе стандарт ассета!!
@AleksYurchenko
@AleksYurchenko Жыл бұрын
Кастомные контролы в UI Toolkit хотелось бы создать и тоже тягать их. Только так, что бы один контрол занимал место другого, а другой смещался вверх или вниз.
@nikghost3356
@nikghost3356 Жыл бұрын
Я бы не сказал что это удачный способ. При начале перетаскивания запоминаем родителя, и вытаскиваем элемент за пределы Grid. После чего перемещаем, и устанавливаем нового родителя. Если UIItem за пределами слотов, просто возвращаем изначальный слот.
@BastionKadabr
@BastionKadabr 3 күн бұрын
у Unity это называется конкретно Supported Events Manual/Unity/ UI/Events/SupportedEvents честно зае искать этот список , когда еще не знаешь точно в каком отделе там 17 штук
@romarizkov
@romarizkov 2 жыл бұрын
Бро, а нужно ли в свойствах Main Camera в стеке прописывать UICamera, чтобы при первом запуске видеть не пустой Скайбокс, а созданный интерфейс инвентаря?
@othelnik6659
@othelnik6659 Жыл бұрын
Отличное видео! А что если у меня 2 канваса, второй как раз с инвентарем но он конфликтует с первым и не дает мне перекладывать предметы, но после отключения первого канваса все предметы нормально перекладываются?
@PorksandWith
@PorksandWith 2 жыл бұрын
привет! можешь сделать видео про настройку райдера? возможно плагины, линтеры и все чем пользуешься
@gamedevlavka
@gamedevlavka 2 жыл бұрын
Привет! Да там снимать нечего) голый райдер)
@romarizkov
@romarizkov 2 жыл бұрын
Бро, есть способ каким-то образом реализовать оконный интерфейс в Unity? Окна как в Винде, всплывающие меню, закрытие одних окон, открытие других?
@ericpetakchyan9457
@ericpetakchyan9457 2 жыл бұрын
Спасибо за урок, все работает четко, как в видео. Такой вопрос только: когда отпускаю item, он садиться в slot резко, моментально, без анимации. Можно реализовать что-то подобное, чтобы item садился в slot плавно ?
@gamedevlavka
@gamedevlavka 2 жыл бұрын
Конечно можно, нужно просто не присваивать новую координату резко, а запускать алгоритм "полета" из текущей точки в нужную. Я такие вещи делаю через корутину
@antplay6759
@antplay6759 2 жыл бұрын
А можно ли как-то закрепить позицию по определённой оси? Я хочу чтобы объект двигался только по оси X
@romarizkov
@romarizkov 2 жыл бұрын
В свойствах нужного объекта ищи ключевое слово fix или его вариации
@TimKarlMarxLenin
@TimKarlMarxLenin Жыл бұрын
Отличное видео! Спасибо за прекрасные и простые видео на русском языке!
@MoronicSoul
@MoronicSoul 2 ай бұрын
хм, я понял как этим пользоваться(+-), но не понял как это работает. мы же не написали никакого когда, который непосредственно берет и тащит. только, грубо говоря, обработчики событий, или что-то такое.
@DrZupan
@DrZupan 7 ай бұрын
а как 3д объект дропнуть в ячейку?
@romankisel9261
@romankisel9261 2 жыл бұрын
Здравствуйте , а можно где-то взять готовый код?
@romarizkov
@romarizkov 2 жыл бұрын
Быстрее самому будет написать, чем искать готовый код целый год
@nikegoof1912
@nikegoof1912 2 жыл бұрын
Возможно это только у меня белый экран на заднем плане і не тащится предмет... или я штото не так сделал ;(
@romarizkov
@romarizkov 2 жыл бұрын
Бро, как ты так сделал, что в редакторе скриптов появляется всплывающее меню, которое даёт выбирать слова?
@gamedevlavka
@gamedevlavka 2 жыл бұрын
Если я правильно понял вопрос, то это все все райдер (Rider: www.jetbrains.com/rider/).
@romarizkov
@romarizkov 2 жыл бұрын
@@gamedevlavka Visual Studio Code поставил. Там норм
@romarizkov
@romarizkov 2 жыл бұрын
Бро, а как ты быстро пронаштамповал UISlot'ов пробельчиком? У меня каждый раз надо вызывать из меню дупликейт.
@gamedevlavka
@gamedevlavka 2 жыл бұрын
@@romarizkov ctrl+d - шоткат для создания дупликата)
@user-dm5wf5tq2n
@user-dm5wf5tq2n 2 жыл бұрын
@@gamedevlavka Привет, тутор очень понравился, доходчиво всё объясняешь. У меня только возникла проблемка с scaleFactor. Сам визуал инвентаря я сделал не через камеру, а сразу с канвасом. И как бы я не делил дельту на scaleFactor, всё равно он запаздывает за курсором. При дебаге scaleFactor не равен нулю. Я хз как это исправить. Подскажи плез, буду очень благодарен🙏🙏🙏
@requiem_for_a_dream5463
@requiem_for_a_dream5463 Жыл бұрын
Что такое партикл?
@gamedevlavka
@gamedevlavka Жыл бұрын
Частица в переводе с английского. В юнити есть система частиц для создания эффектов (ParticleSystem)
@requiem_for_a_dream5463
@requiem_for_a_dream5463 Жыл бұрын
@@gamedevlavka Спасибо за ответ!
@requiem_for_a_dream5463
@requiem_for_a_dream5463 Жыл бұрын
@@gamedevlavka А можно попросить тебя пожалуйста, какие книги посоветуешь почитать по с#? Я смотрел сегодня твои два первых видоса по инвентарю. Пару раз пересмотрел. Сами методы понятны, что они означают и что делают, но непонятен синтаксис. что такое Interface я вообще не знал, что существует такой класс или как это называется. И сам синтаксис непонятен. Может есть какие нибудь книжки где все это объясняется. Скоро как раз учеба. Будет чем на лекциях заняться.
@1cheeky_cat1
@1cheeky_cat1 Жыл бұрын
Как правильно сделать двойной клик/тап по предмету?
@gamedevlavka
@gamedevlavka Жыл бұрын
Через кеширование первого клика: запоминается клик и запускается короткий таймер, который очищает информацию о первом клике. Если таймер ещё не кончился, а игрок кликнул ещё раз, то это двойной клик/тап
@livingend1638
@livingend1638 2 жыл бұрын
Где ты был две недели назад, че я сам систему пилил... kzbin.info/www/bejne/ZoW1ppyNg8mepM0
@yatyanochka
@yatyanochka Жыл бұрын
можно ли сделть что-то подобное? public void OnDrop(PointerEventData eventData) { if(gameObject.name == "Slot1") { Debug.Log("!!!"); } }
@leg0redd0
@leg0redd0 Жыл бұрын
Спасибо!
Сохранение игры в файл в Unity
20:13
Лавка Разработчика
Рет қаралды 16 М.
Drag and drop in Unity UI - create your own inventory UI!
12:47
Coco Code
Рет қаралды 100 М.
Secret Experiment Toothpaste Pt.4 😱 #shorts
00:35
Mr DegrEE
Рет қаралды 36 МЛН
ОБЯЗАТЕЛЬНО СОВЕРШАЙТЕ ДОБРО!❤❤❤
00:45
Chapitosiki
Рет қаралды 4,9 МЛН
50 YouTubers Fight For $1,000,000
41:27
MrBeast
Рет қаралды 210 МЛН
39kgのガリガリが踊る絵文字ダンス/39kg boney emoji dance#dance #ダンス #にんげんっていいな
00:16
💀Skeleton Ninja🥷【にんげんっていいなチャンネル】
Рет қаралды 8 МЛН
Я сделал онлайн игру за 24 часа!
13:01
Хауди Хо™ - Просто о мире IT!
Рет қаралды 290 М.
How to make a drag and drop game in Unity
19:29
Tarodev
Рет қаралды 49 М.
Интерфейс для любого разрешения! Адаптивный UI в Unity
10:52
Мотай на ус • Школа разработки игр
Рет қаралды 49 М.
2D Инвентарь в Unity - легко
13:10
Graphical Design
Рет қаралды 53 М.
SCRIPTABLE OBJECTS in Unity
8:57
Brackeys
Рет қаралды 1 МЛН
Secret Experiment Toothpaste Pt.4 😱 #shorts
00:35
Mr DegrEE
Рет қаралды 36 МЛН