Drag and Drop Menu

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Drag and Drop Menu

Сообщение e-x 06 ноя 2022, 23:57

Добрый День!
Решил в своем меню инвентаря создать драг энд дроп объектов.

на кнопку вешаю скрипт, код
тоесть при нажатии кнопка должна следовать за курсором мыши, но!

transform.position = Input.mousePosition

кликаю по кнопке и она улетает в стратосферу (смотрю координаты в инспекторе).

Я уже замучался, пересмотрел кучу ютюбов и форумов, миллион вариантов кода , ничего не выходит.

1.Канвас на которм кнопка Render Mode - Screen Space Camera.
2.transform.position = Input.mousePosition вешал
сюда
public void OnDrag(PointerEventData eventData)
и сюда
if (Input.GetMouseButton(0)

ничего не выходит(((....подскажите плиз
e-x
UNIт
 
Сообщения: 141
Зарегистрирован: 20 июн 2022, 16:47

Re: Drag and Drop Menu

Сообщение Saltant 07 ноя 2022, 02:37

e-x писал(а):Добрый День!
Я уже замучался, пересмотрел кучу ютюбов и форумов, миллион вариантов кода , ничего не выходит.
ничего не выходит(((....подскажите плиз

Видать ты видосы в какой то другой вселенной искал и в другом ютубе...

Я на Google Play _https://play.google.com/store/apps/developer?id=Saltant
Аватара пользователя
Saltant
Адепт
 
Сообщения: 2236
Зарегистрирован: 09 окт 2018, 16:40
Откуда: Химки
  • Сайт

Re: Drag and Drop Menu

Сообщение e-x 07 ноя 2022, 17:08

Тоже полезное видео, спасибо,тут хоть человек показал на примере Rectransform и как дропать объект.
Но у меня немножко иное, мне вот непонятен один момент.
У меня игра 3Д.
Есть меню инвентаря, матрица 15 элементов.
И есть один 16 ый, который собственно мы и перетаскиваем.
Как двигать его зацепив мышкой то я понял....но,я не могу понять одно, например, мне надо перенести предмет из ячейки 2 в ячейку 4.
Я кликаю по ячейке 2 вызываю метод OnDrug, далее должна "прилететь ячейка 16" записать в себя данные из ячейки 2, далее ....далее пока все представляю.

Как сосбтвенно обеспечить "прилет" ячейки 16 к моему мауспоситион, везде написано используют такой код
transform.position = Input.mousePosition
но это не работает!!!при клике мой предмет 16 улетает в стартосферу и в примере выше тоже нет такого описания.
как быть?
Спасибо!
e-x
UNIт
 
Сообщения: 141
Зарегистрирован: 20 июн 2022, 16:47

Re: Drag and Drop Menu

Сообщение Alkos26Rus 07 ноя 2022, 18:10

e-x писал(а):Тоже полезное видео, спасибо,тут хоть человек показал на примере Rectransform и как дропать объект.
Но у меня немножко иное, мне вот непонятен один момент.
У меня игра 3Д.
Есть меню инвентаря, матрица 15 элементов.
И есть один 16 ый, который собственно мы и перетаскиваем.
Как двигать его зацепив мышкой то я понял....но,я не могу понять одно, например, мне надо перенести предмет из ячейки 2 в ячейку 4.
Я кликаю по ячейке 2 вызываю метод OnDrug, далее должна "прилететь ячейка 16" записать в себя данные из ячейки 2, далее ....далее пока все представляю.

Как сосбтвенно обеспечить "прилет" ячейки 16 к моему мауспоситион, везде написано используют такой код
transform.position = Input.mousePosition
но это не работает!!!при клике мой предмет 16 улетает в стартосферу и в примере выше тоже нет такого описания.
как быть?
Спасибо!

даже на этом видео есть перемещение предмета в ячейку, ты походу не внимательно смотришь
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1642
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: Drag and Drop Menu

Сообщение e-x 07 ноя 2022, 18:13

ну предмет перемещается как?...мышкой зацепил и тяну, не с помощью другой ячейки перетаскиваемой, если честно не настолько силен в английском чтоб понимать спикера, так интуитивно смотрю, но если я еще ни разу не создавал ни одного своего первого меню, не так просто в этих нюансах(
e-x
UNIт
 
Сообщения: 141
Зарегистрирован: 20 июн 2022, 16:47

Re: Drag and Drop Menu

Сообщение Alkos26Rus 07 ноя 2022, 19:49

e-x писал(а):ну предмет перемещается как?...мышкой зацепил и тяну, не с помощью другой ячейки перетаскиваемой, если честно не настолько силен в английском чтоб понимать спикера, так интуитивно смотрю, но если я еще ни разу не создавал ни одного своего первого меню, не так просто в этих нюансах(

да спикера вобще не нужно слушать, код нужно видеть и повторять
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1642
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: Drag and Drop Menu

Сообщение Saltant 08 ноя 2022, 10:23

e-x писал(а):ну предмет перемещается как?...мышкой зацепил и тяну, не с помощью другой ячейки перетаскиваемой, если честно не настолько силен в английском чтоб понимать спикера, так интуитивно смотрю, но если я еще ни разу не создавал ни одного своего первого меню, не так просто в этих нюансах(

Ну не спроста наверно юзаются различне системы координат в Юнити, по этому у тебя и улетает всё в "стратосферу" т.к ты не те координаты юзаешь, не в той системе координат которая нужна под твою задачу.
В видосе все наглядно понятно, юзаешь интерфейсы и там пишешь код в нужном тебе методе.
Я на Google Play _https://play.google.com/store/apps/developer?id=Saltant
Аватара пользователя
Saltant
Адепт
 
Сообщения: 2236
Зарегистрирован: 09 окт 2018, 16:40
Откуда: Химки
  • Сайт

Re: Drag and Drop Menu

Сообщение breNnor- 08 ноя 2022, 13:34

Если ты не силен в английском, скачай яндекс.браузер, там есть перевод видео на ютубе (тебе будет рассказывается все на Русском языке).
И тебе еще надо знать теперь, что в канвасе все лишние Raycast Target нужно отключать.
IPointerEnter. IDrop, тебе нужно рыть сюда чтобы скидывать предмет в нужный слот
•−−• •−• •• •−− • − −−••−−
Аватара пользователя
breNnor-
UNIт
 
Сообщения: 55
Зарегистрирован: 15 сен 2021, 17:20
Откуда: Тюмень
Skype: Null

Re: Drag and Drop Menu

Сообщение e-x 08 ноя 2022, 14:38

Я скачал пример который в видеоролике, с сайта автора,потрогал так сказать руками.Совсем не то что я делал до этого, можно и без "посредника" элемента перекидывать перезаписывать предметы, и правильно использовать Rectransform,и все двигается норм, этот пример мне больше нравиться чем был у меня,в принципе пока понятно.Спасибо, буду разбираться.
e-x
UNIт
 
Сообщения: 141
Зарегистрирован: 20 июн 2022, 16:47

Re: Drag and Drop Menu

Сообщение e-x 08 ноя 2022, 19:04

Дайте еще плиз совет.
Во многих роликах рекомендуют под меню делать отдельную камеру, мол так все лучше и т.д. но конкретики нет, просто..."я вот так всегда делаю потому что знаю что так надо")))
Я сделал отдельную камеру, при вызове инвентаря, основную отключаю, так как когда две камеры то у меня видно и меню и мир.
Я чето не увидел ничего особого когда вторая камера.

Итого:
-надо ли делать две камеры?если да то какие плюсы за?
-если две камеры, как правильно ? отключать основную при вызове меню инвентаря или все же должно быть две но как-то настроить слои?
-если я хочу еще карту игры, то че еще третью камеру под нее делать?

Как правильно то?

Спасибо!
e-x
UNIт
 
Сообщения: 141
Зарегистрирован: 20 июн 2022, 16:47

Re: Drag and Drop Menu

Сообщение Alkos26Rus 08 ноя 2022, 19:16

Нет тут такого что лучше а что хуже, зависит от твоих задач, если тебе нужно что бы в меню не было видно 3д пространства, то делай 2 камеры и настраивай маску что данная камера должна видеть, для карты конечно лучше делать вторую камеру там же она наверняка будет изометрическая и вобще другая по параметрам и управлению
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1642
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: Drag and Drop Menu

Сообщение e-x 09 ноя 2022, 14:58

Расскажите плиз еще два момента:

1.вот код из примера
if (eventData.pointerDrag != null)
{

eventData.pointerDrag.GetComponent<RectTransform>().anchoredPosition = GetComponent<RectTransform>().anchoredPosition;

}

pointerDrag , как я понимаю, это то что мы зацепили мышкой и тащим, как понят (не равно нулл)?((, если мы уже чето тащим то уже не нулл, уже чето есть)...дайте плиз совет-комент по pointerDrug

2.Хочу на элементе Image в UI менять иконку (Sprite)

Как менять если повесив скрипт на сам Image у меня получается, а как вот в таком случае?

Есть пустышка, в ней три имеджа, на пустышке скрипт.

public Image itemImage1;
public Image itemImage2;
public Image itemImage3;

в них хочу запихнуть мои имеджы(спрайты)

далее при старте

public void Start()
{
itemImage1 = GetComponent<Image>().sprite;

}

и у меня валится ошибка что нельзя конвертировать из Engine в Engine.UI, я понимаю что использую разные библиотеки в моем коде, как тогда быть? как правильно записать?Надо ли конвертировать , можно , нужно ?
Или скрипт по смене спрайта должен висеть только на картинке?
Спасибо!
e-x
UNIт
 
Сообщения: 141
Зарегистрирован: 20 июн 2022, 16:47

Re: Drag and Drop Menu

Сообщение breNnor- 09 ноя 2022, 17:49

Синтаксис:
Используется csharp
public Image itemImage1;
public Image itemImage2;
public Image itemImage3;

public void Start()
    {
        itemImage1 = GetComponent<Image>().sprite;

    }
 
ты тут пытаешься пихнуть спрайт в компонент Image.

Тебе надо сделать такое.
Синтаксис:
Используется csharp
public Sprite itemImage1;
public Sprite itemImage2;
public Sprite itemImage3;

public void Start()
    {
        itemImage1 = GetComponent<Image>().sprite;
    }
 


Еще когда пишешь сообщение у тебя над окном куда писать текст, есть кнопочки, для кода используй кнопку с названием CS.
•−−• •−• •• •−− • − −−••−−
Аватара пользователя
breNnor-
UNIт
 
Сообщения: 55
Зарегистрирован: 15 сен 2021, 17:20
Откуда: Тюмень
Skype: Null

Re: Drag and Drop Menu

Сообщение e-x 09 ноя 2022, 18:10

Верно, они и успешно впихиваются когда скрипт висит на имедже(код как в твоем примере) в который пихаю спрайты, а если не на этом имидже, а пустышке, как указать имидж в который надо впихнуть спрайт?Если скрипт на пустышке и я пропишу public Sprite itemImage; то как это(спрайт) привязать к имеджу нужному?
e-x
UNIт
 
Сообщения: 141
Зарегистрирован: 20 июн 2022, 16:47

Re: Drag and Drop Menu

Сообщение e-x 09 ноя 2022, 18:18

Пока писал понял)))...

надо наверно так

myimge=transform.GetChild(1).GetComponent<Image>().sprite;

он же "дети" а скрипт на "родителе")))
e-x
UNIт
 
Сообщения: 141
Зарегистрирован: 20 июн 2022, 16:47

След.

Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot], Yandex [Bot] и гости: 21