Очень простая и понятная реализация👍 Но я бы, наверное, ещё подумал по поводу отрисовки предмета поверх слотов. Мне кажется, во многих случаях отключать сетку будет неудобным (при добавлении новых слотов например), но это уже совсем другая история))
Да, это другая история) однако, отключение сетки все равно можно юзать: добавляешь элемент, включаешь сетку, перестраиваешь, отклбчаешь сетку, можно таскать) можно со слоями запариться, схожу не скажу, что проще, там и так и так есть подводные камни)
Я бы не сказал что это удачный способ. При начале перетаскивания запоминаем родителя, и вытаскиваем элемент за пределы Grid. После чего перемещаем, и устанавливаем нового родителя. Если UIItem за пределами слотов, просто возвращаем изначальный слот.
Спасибо. Отлично объяснено. Лайк поставил. Правда я не стал сортировать элементы в группе. Если я правильно понимаю - это работа с массивом и памятью при каждом переносе. Вместо этого в OnBeginDrag запоминал parent (если мы хотим, чтобы он возращался в предыдущий слот в случае промаха) и задавал parent = grid, предварительно выключив GridGroupLayout (раз это внешний элемент по отношению ко всем другим), а на OnEndDrag включал обратно GridGroupLayout и проверял, если родитель grid, то задать родителем предыдущий слот. Всё-таки событие OnDrop произойдет раньше OnEndDrag, поэтому такое условие подойдёт. Его можно применять, если по каким-то причинам не хочется менять порядок самих слотов. Если в чём-то логически ошибся - поправь пожалуйста. Только начинаю изучать Юнити и С#.
Спасибо за видео, насчёт темы для видео, я бы посмотрел про таймеры. Вариантов реализаций таймеров много, поэтому я бы хотел узнать с твоей точки зрения, какое решение наиболее практичное.
Спасибо! Очень полезно новичку! Как раз сегодня думал разобраться, как сделать джостик на андроид. Вот теперь понятно куда копать :) Может сделаешь урок по реализации простого джостика для андроид управления персонажем но через InputSystem и Character Controller😁
Согласен с предыдущим оратором, есть Joistick Pack, который легко кастомизируется. А зачем тебе InputSystem? Он обычно используется, можно было игроку дать настраивать управление, но это больше для ПК/Консоли история, а не про мобилки. Либо я не до конца понял вопрос)
@@gamedevlavka Зато я понял немного больше теперь ))) Да видел этот пак. Надо в коде разбираться самому, а когда тебе рассказывают намного проще😊 Я пока не сильно понимаю как правильно двигать персонажа (есть же куча вариантов). А через Joystick Pack и rigidbody.MovePosition у меня почему то персонаж как то дергано двигался. В то время как через wasd было норм
@@livingend1638 там он всегда есть и будет. единственное что стандарт теперь надо самому скачивать))))) а новички которые 2020 ставят, даже и не подозревают о наборе стандарт ассета!!
если ты про размеры грида 1800х1100, то просто это суммы размеров ячеек, отступов внутрь контейнера, и наружных отступов ячеек)1800 = 300*5 + 50*4 +100 и 1100 = 300*3+50*2+100. Если ты не про эти размеры то сори что влез и задушнил)
Отличное видео! От себя хочу добавить, хоть и прошло уже прилично времени, что по наблюдениям если бросить предмет когда курсор не точно над белым квадратом, а рядом, над пустым бортиком, то дроп не сработает и предмет вернётся в стартовую позицию. Я это решил следующим образом: image в слоте сделал полностью прозрачным и увеличил его размеры на ширину spacing в сетке. И сделал ребёнком ещё один image белого квадрата старых размеров, которому отключил рейкаст таргет. Визуально то же самое, но без пробелов в сетке.
Отличное видео! А что если у меня 2 канваса, второй как раз с инвентарем но он конфликтует с первым и не дает мне перекладывать предметы, но после отключения первого канваса все предметы нормально перекладываются?
хм, я понял как этим пользоваться(+-), но не понял как это работает. мы же не написали никакого когда, который непосредственно берет и тащит. только, грубо говоря, обработчики событий, или что-то такое.
Кастомные контролы в UI Toolkit хотелось бы создать и тоже тягать их. Только так, что бы один контрол занимал место другого, а другой смещался вверх или вниз.
Спасибо за урок, все работает четко, как в видео. Такой вопрос только: когда отпускаю item, он садиться в slot резко, моментально, без анимации. Можно реализовать что-то подобное, чтобы item садился в slot плавно ?
Конечно можно, нужно просто не присваивать новую координату резко, а запускать алгоритм "полета" из текущей точки в нужную. Я такие вещи делаю через корутину
Бро, а нужно ли в свойствах Main Camera в стеке прописывать UICamera, чтобы при первом запуске видеть не пустой Скайбокс, а созданный интерфейс инвентаря?
Через кеширование первого клика: запоминается клик и запускается короткий таймер, который очищает информацию о первом клике. Если таймер ещё не кончился, а игрок кликнул ещё раз, то это двойной клик/тап
@@gamedevlavka Привет, тутор очень понравился, доходчиво всё объясняешь. У меня только возникла проблемка с scaleFactor. Сам визуал инвентаря я сделал не через камеру, а сразу с канвасом. И как бы я не делил дельту на scaleFactor, всё равно он запаздывает за курсором. При дебаге scaleFactor не равен нулю. Я хз как это исправить. Подскажи плез, буду очень благодарен🙏🙏🙏
@@gamedevlavka А можно попросить тебя пожалуйста, какие книги посоветуешь почитать по с#? Я смотрел сегодня твои два первых видоса по инвентарю. Пару раз пересмотрел. Сами методы понятны, что они означают и что делают, но непонятен синтаксис. что такое Interface я вообще не знал, что существует такой класс или как это называется. И сам синтаксис непонятен. Может есть какие нибудь книжки где все это объясняется. Скоро как раз учеба. Будет чем на лекциях заняться.
Гендерно-нейтральный коммент, минимум из трех слов, для продвижения канала
Авторитетный ответ в сопровождении с лайком, для имитации диалога с подписчиком
Всё супер с первого раза получилось именно так и нужно объяснять всё по полочкам спасибо большое
Очень простая и понятная реализация👍 Но я бы, наверное, ещё подумал по поводу отрисовки предмета поверх слотов. Мне кажется, во многих случаях отключать сетку будет неудобным (при добавлении новых слотов например), но это уже совсем другая история))
Да, это другая история) однако, отключение сетки все равно можно юзать: добавляешь элемент, включаешь сетку, перестраиваешь, отклбчаешь сетку, можно таскать) можно со слоями запариться, схожу не скажу, что проще, там и так и так есть подводные камни)
блин просто отличный тутор, все сразу получилось!!
Отличный урок!
Лукас и коммент в поддержку канала !
Крутое видео, понятное и именно то, что я искал!
Godlike! очень крутое видео!!! Спасибо)
Я бы не сказал что это удачный способ. При начале перетаскивания запоминаем родителя, и вытаскиваем элемент за пределы Grid. После чего перемещаем, и устанавливаем нового родителя. Если UIItem за пределами слотов, просто возвращаем изначальный слот.
Спасибо. Отлично объяснено. Лайк поставил.
Правда я не стал сортировать элементы в группе. Если я правильно понимаю - это работа с массивом и памятью при каждом переносе.
Вместо этого в OnBeginDrag запоминал parent (если мы хотим, чтобы он возращался в предыдущий слот в случае промаха) и задавал parent = grid, предварительно выключив GridGroupLayout (раз это внешний элемент по отношению ко всем другим), а на OnEndDrag включал обратно GridGroupLayout и проверял, если родитель grid, то задать родителем предыдущий слот.
Всё-таки событие OnDrop произойдет раньше OnEndDrag, поэтому такое условие подойдёт.
Его можно применять, если по каким-то причинам не хочется менять порядок самих слотов.
Если в чём-то логически ошибся - поправь пожалуйста. Только начинаю изучать Юнити и С#.
Красавчик)
Лайк и подписка)
Очередное отличное видео. Спасибо.
Спасибо за видео, насчёт темы для видео, я бы посмотрел про таймеры. Вариантов реализаций таймеров много, поэтому я бы хотел узнать с твоей точки зрения, какое решение наиболее практичное.
Принимается)
Спасибо! Очень полезно новичку! Как раз сегодня думал разобраться, как сделать джостик на андроид. Вот теперь понятно куда копать :) Может сделаешь урок по реализации простого джостика для андроид управления персонажем но через InputSystem и Character Controller😁
А бесплатный плагин Joystick Pack с ассет стора не подойдёт?
Согласен с предыдущим оратором, есть Joistick Pack, который легко кастомизируется. А зачем тебе InputSystem? Он обычно используется, можно было игроку дать настраивать управление, но это больше для ПК/Консоли история, а не про мобилки. Либо я не до конца понял вопрос)
@@gamedevlavka Зато я понял немного больше теперь ))) Да видел этот пак. Надо в коде разбираться самому, а когда тебе рассказывают намного проще😊 Я пока не сильно понимаю как правильно двигать персонажа (есть же куча вариантов). А через Joystick Pack и rigidbody.MovePosition у меня почему то персонаж как то дергано двигался. В то время как через wasd было норм
раньше был прямо готовый джойстик для андроида в стандартных ассетах, может и сейчас он там лежит...
@@livingend1638 там он всегда есть и будет. единственное что стандарт теперь надо самому скачивать))))) а новички которые 2020 ставят, даже и не подозревают о наборе стандарт ассета!!
Пишу от 07.05.24.
Если вкратце - отличный видос, нашёл решение своей проблемы, спасибо, снимаю шляпу.
если ты про размеры грида 1800х1100, то просто это суммы размеров ячеек, отступов внутрь контейнера, и наружных отступов ячеек)1800 = 300*5 + 50*4 +100 и 1100 = 300*3+50*2+100.
Если ты не про эти размеры то сори что влез и задушнил)
Спасибо за урок, можно ли в ближайшем будущем урок по Drag and Drop в Unity 3Д объектов на поле. Как шахматные фигуры в 3Д.
Отличное видео!
От себя хочу добавить, хоть и прошло уже прилично времени, что по наблюдениям если бросить предмет когда курсор не точно над белым квадратом, а рядом, над пустым бортиком, то дроп не сработает и предмет вернётся в стартовую позицию.
Я это решил следующим образом: image в слоте сделал полностью прозрачным и увеличил его размеры на ширину spacing в сетке. И сделал ребёнком ещё один image белого квадрата старых размеров, которому отключил рейкаст таргет. Визуально то же самое, но без пробелов в сетке.
Спасибо!
Круто, просто и понятно!
Отличное видео! А что если у меня 2 канваса, второй как раз с инвентарем но он конфликтует с первым и не дает мне перекладывать предметы, но после отключения первого канваса все предметы нормально перекладываются?
Бро, есть способ каким-то образом реализовать оконный интерфейс в Unity? Окна как в Винде, всплывающие меню, закрытие одних окон, открытие других?
привет! можешь сделать видео про настройку райдера? возможно плагины, линтеры и все чем пользуешься
Привет! Да там снимать нечего) голый райдер)
хм, я понял как этим пользоваться(+-), но не понял как это работает. мы же не написали никакого когда, который непосредственно берет и тащит. только, грубо говоря, обработчики событий, или что-то такое.
Кастомные контролы в UI Toolkit хотелось бы создать и тоже тягать их. Только так, что бы один контрол занимал место другого, а другой смещался вверх или вниз.
Спасибо
Спасибо за урок, все работает четко, как в видео. Такой вопрос только: когда отпускаю item, он садиться в slot резко, моментально, без анимации. Можно реализовать что-то подобное, чтобы item садился в slot плавно ?
Конечно можно, нужно просто не присваивать новую координату резко, а запускать алгоритм "полета" из текущей точки в нужную. Я такие вещи делаю через корутину
А можно ли как-то закрепить позицию по определённой оси? Я хочу чтобы объект двигался только по оси X
В свойствах нужного объекта ищи ключевое слово fix или его вариации
а как 3д объект дропнуть в ячейку?
Бро, а нужно ли в свойствах Main Camera в стеке прописывать UICamera, чтобы при первом запуске видеть не пустой Скайбокс, а созданный интерфейс инвентаря?
Возможно это только у меня белый экран на заднем плане і не тащится предмет... или я штото не так сделал
;(
Отличное видео! Спасибо за прекрасные и простые видео на русском языке!
Здравствуйте , а можно где-то взять готовый код?
Быстрее самому будет написать, чем искать готовый код целый год
Как правильно сделать двойной клик/тап по предмету?
Через кеширование первого клика: запоминается клик и запускается короткий таймер, который очищает информацию о первом клике. Если таймер ещё не кончился, а игрок кликнул ещё раз, то это двойной клик/тап
Бро, как ты так сделал, что в редакторе скриптов появляется всплывающее меню, которое даёт выбирать слова?
Если я правильно понял вопрос, то это все все райдер (Rider: www.jetbrains.com/rider/).
@@gamedevlavka Visual Studio Code поставил. Там норм
Бро, а как ты быстро пронаштамповал UISlot'ов пробельчиком? У меня каждый раз надо вызывать из меню дупликейт.
@@romarizkov ctrl+d - шоткат для создания дупликата)
@@gamedevlavka Привет, тутор очень понравился, доходчиво всё объясняешь. У меня только возникла проблемка с scaleFactor. Сам визуал инвентаря я сделал не через камеру, а сразу с канвасом. И как бы я не делил дельту на scaleFactor, всё равно он запаздывает за курсором. При дебаге scaleFactor не равен нулю. Я хз как это исправить. Подскажи плез, буду очень благодарен🙏🙏🙏
Что такое партикл?
Частица в переводе с английского. В юнити есть система частиц для создания эффектов (ParticleSystem)
@@gamedevlavka Спасибо за ответ!
@@gamedevlavka А можно попросить тебя пожалуйста, какие книги посоветуешь почитать по с#? Я смотрел сегодня твои два первых видоса по инвентарю. Пару раз пересмотрел. Сами методы понятны, что они означают и что делают, но непонятен синтаксис. что такое Interface я вообще не знал, что существует такой класс или как это называется. И сам синтаксис непонятен. Может есть какие нибудь книжки где все это объясняется. Скоро как раз учеба. Будет чем на лекциях заняться.
Где ты был две недели назад, че я сам систему пилил... ruclips.net/video/0TRuiWNdknk/видео.html
можно ли сделть что-то подобное?
public void OnDrop(PointerEventData eventData)
{
if(gameObject.name == "Slot1")
{
Debug.Log("!!!");
}
}
Спасибо!