Добрый День! Решил в своем меню инвентаря создать драг энд дроп объектов.
на кнопку вешаю скрипт, код тоесть при нажатии кнопка должна следовать за курсором мыши, но!
transform.position = Input.mousePosition
кликаю по кнопке и она улетает в стратосферу (смотрю координаты в инспекторе).
Я уже замучался, пересмотрел кучу ютюбов и форумов, миллион вариантов кода , ничего не выходит.
1.Канвас на которм кнопка Render Mode - Screen Space Camera. 2.transform.position = Input.mousePosition вешал сюда public void OnDrag(PointerEventData eventData) и сюда if (Input.GetMouseButton(0)
ничего не выходит(((....подскажите плиз
Re: Drag and Drop Menu
Добавлено: 07 ноя 2022, 02:37
Saltant
e-x писал(а):Добрый День! Я уже замучался, пересмотрел кучу ютюбов и форумов, миллион вариантов кода , ничего не выходит. ничего не выходит(((....подскажите плиз
Видать ты видосы в какой то другой вселенной искал и в другом ютубе...
Re: Drag and Drop Menu
Добавлено: 07 ноя 2022, 17:08
e-x
Тоже полезное видео, спасибо,тут хоть человек показал на примере Rectransform и как дропать объект. Но у меня немножко иное, мне вот непонятен один момент. У меня игра 3Д. Есть меню инвентаря, матрица 15 элементов. И есть один 16 ый, который собственно мы и перетаскиваем. Как двигать его зацепив мышкой то я понял....но,я не могу понять одно, например, мне надо перенести предмет из ячейки 2 в ячейку 4. Я кликаю по ячейке 2 вызываю метод OnDrug, далее должна "прилететь ячейка 16" записать в себя данные из ячейки 2, далее ....далее пока все представляю.
Как сосбтвенно обеспечить "прилет" ячейки 16 к моему мауспоситион, везде написано используют такой код transform.position = Input.mousePosition но это не работает!!!при клике мой предмет 16 улетает в стартосферу и в примере выше тоже нет такого описания. как быть? Спасибо!
Re: Drag and Drop Menu
Добавлено: 07 ноя 2022, 18:10
Alkos26Rus
e-x писал(а):Тоже полезное видео, спасибо,тут хоть человек показал на примере Rectransform и как дропать объект. Но у меня немножко иное, мне вот непонятен один момент. У меня игра 3Д. Есть меню инвентаря, матрица 15 элементов. И есть один 16 ый, который собственно мы и перетаскиваем. Как двигать его зацепив мышкой то я понял....но,я не могу понять одно, например, мне надо перенести предмет из ячейки 2 в ячейку 4. Я кликаю по ячейке 2 вызываю метод OnDrug, далее должна "прилететь ячейка 16" записать в себя данные из ячейки 2, далее ....далее пока все представляю.
Как сосбтвенно обеспечить "прилет" ячейки 16 к моему мауспоситион, везде написано используют такой код transform.position = Input.mousePosition но это не работает!!!при клике мой предмет 16 улетает в стартосферу и в примере выше тоже нет такого описания. как быть? Спасибо!
даже на этом видео есть перемещение предмета в ячейку, ты походу не внимательно смотришь
Re: Drag and Drop Menu
Добавлено: 07 ноя 2022, 18:13
e-x
ну предмет перемещается как?...мышкой зацепил и тяну, не с помощью другой ячейки перетаскиваемой, если честно не настолько силен в английском чтоб понимать спикера, так интуитивно смотрю, но если я еще ни разу не создавал ни одного своего первого меню, не так просто в этих нюансах(
Re: Drag and Drop Menu
Добавлено: 07 ноя 2022, 19:49
Alkos26Rus
e-x писал(а):ну предмет перемещается как?...мышкой зацепил и тяну, не с помощью другой ячейки перетаскиваемой, если честно не настолько силен в английском чтоб понимать спикера, так интуитивно смотрю, но если я еще ни разу не создавал ни одного своего первого меню, не так просто в этих нюансах(
да спикера вобще не нужно слушать, код нужно видеть и повторять
Re: Drag and Drop Menu
Добавлено: 08 ноя 2022, 10:23
Saltant
e-x писал(а):ну предмет перемещается как?...мышкой зацепил и тяну, не с помощью другой ячейки перетаскиваемой, если честно не настолько силен в английском чтоб понимать спикера, так интуитивно смотрю, но если я еще ни разу не создавал ни одного своего первого меню, не так просто в этих нюансах(
Ну не спроста наверно юзаются различне системы координат в Юнити, по этому у тебя и улетает всё в "стратосферу" т.к ты не те координаты юзаешь, не в той системе координат которая нужна под твою задачу. В видосе все наглядно понятно, юзаешь интерфейсы и там пишешь код в нужном тебе методе.
Re: Drag and Drop Menu
Добавлено: 08 ноя 2022, 13:34
breNnor-
Если ты не силен в английском, скачай яндекс.браузер, там есть перевод видео на ютубе (тебе будет рассказывается все на Русском языке). И тебе еще надо знать теперь, что в канвасе все лишние Raycast Target нужно отключать. IPointerEnter. IDrop, тебе нужно рыть сюда чтобы скидывать предмет в нужный слот
Re: Drag and Drop Menu
Добавлено: 08 ноя 2022, 14:38
e-x
Я скачал пример который в видеоролике, с сайта автора,потрогал так сказать руками.Совсем не то что я делал до этого, можно и без "посредника" элемента перекидывать перезаписывать предметы, и правильно использовать Rectransform,и все двигается норм, этот пример мне больше нравиться чем был у меня,в принципе пока понятно.Спасибо, буду разбираться.
Re: Drag and Drop Menu
Добавлено: 08 ноя 2022, 19:04
e-x
Дайте еще плиз совет. Во многих роликах рекомендуют под меню делать отдельную камеру, мол так все лучше и т.д. но конкретики нет, просто..."я вот так всегда делаю потому что знаю что так надо"))) Я сделал отдельную камеру, при вызове инвентаря, основную отключаю, так как когда две камеры то у меня видно и меню и мир. Я чето не увидел ничего особого когда вторая камера.
Итого: -надо ли делать две камеры?если да то какие плюсы за? -если две камеры, как правильно ? отключать основную при вызове меню инвентаря или все же должно быть две но как-то настроить слои? -если я хочу еще карту игры, то че еще третью камеру под нее делать?
Как правильно то?
Спасибо!
Re: Drag and Drop Menu
Добавлено: 08 ноя 2022, 19:16
Alkos26Rus
Нет тут такого что лучше а что хуже, зависит от твоих задач, если тебе нужно что бы в меню не было видно 3д пространства, то делай 2 камеры и настраивай маску что данная камера должна видеть, для карты конечно лучше делать вторую камеру там же она наверняка будет изометрическая и вобще другая по параметрам и управлению
Re: Drag and Drop Menu
Добавлено: 09 ноя 2022, 14:58
e-x
Расскажите плиз еще два момента:
1.вот код из примера if (eventData.pointerDrag != null) {
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, я понимаю что использую разные библиотеки в моем коде, как тогда быть? как правильно записать?Надо ли конвертировать , можно , нужно ? Или скрипт по смене спрайта должен висеть только на картинке? Спасибо!
Еще когда пишешь сообщение у тебя над окном куда писать текст, есть кнопочки, для кода используй кнопку с названием CS.
Re: Drag and Drop Menu
Добавлено: 09 ноя 2022, 18:10
e-x
Верно, они и успешно впихиваются когда скрипт висит на имедже(код как в твоем примере) в который пихаю спрайты, а если не на этом имидже, а пустышке, как указать имидж в который надо впихнуть спрайт?Если скрипт на пустышке и я пропишу public Sprite itemImage; то как это(спрайт) привязать к имеджу нужному?