Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 14 Next capture
2021 2022 2023
2 captures
12 Jun 22 - 14 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
1
Question by RustyCrow · May 21, 2019 at 01:33 PM · c#instantiatespawneventsystemdraggable

How to drag UI element immediately after instantiating/spawning it on tap/click.

The problem right now is that after i spawn/instantiate the dragable UI element by tapping(OnPointerDown) the spawn UI element, i have to lift my finger and tap the dragable UI again (which spawns on top of the spawn point).


I want this to be 1 smooth motion. 1 Tap(and hold) - instantiate - somehow force the drag event on the dragable UI element - drag the UI to new position - profit.


I am struggling to find information how to use/manipulate these events. the docs tell me what they do but i am thinking more like a guide on how to use them. example like how to force an event or what event fires before the other etc. any info on this is very much appreciated.

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

4 Replies

· Add your reply
  • Sort: 
avatar image
6

Answer by valdeezzee · Feb 10, 2020 at 08:18 PM

I tried recreating this and I think I have a solution.

In my case, as soon as I start dragging the UI element, I instantiate the new element. In the script where you are instantiating your new UI element, you're going to want to assign the element to eventData.pointerDrag.

 public class DragSpawnTest : MonoBehaviour, IDragHandler, IBeginDragHandler
 {
     public GameObject testUI;
     public GameObject parentCanvas;
 
     public void OnBeginDrag(PointerEventData eventData)
     {
         GameObject go = Instantiate(testUI, eventData.position, Quaternion.identity);
         go.transform.SetParent(parentCanvas.transform, false);
         eventData.pointerDrag = go; // assign instantiated element
     }
 
     public void OnDrag(PointerEventData eventData)
     {
     }
 }
 

Then in a script attached to your instantiated UI element, you can have your OnDrag event. The element will continue to follow your mouse.

 public void OnDrag(PointerEventData eventData)
     {
         _rectTransform.position = eventData.position;
         Debug.Log("Dragging");
     }
Comment
Add comment · Show 2 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Tekko · Apr 08, 2020 at 04:09 PM 0
Share

Works fine!

avatar image Another_Menta · Apr 08, 2020 at 05:49 PM 0
Share

thank you so much, thats a really neat way of handling things!

avatar image
1

Answer by Niserent · Apr 12 at 10:21 AM

Thanks to @valdeezzee's answer, I was able to figure out how to create and drag the created object, but exactly after pressing on the first object, as the author of the question @RustyCrow and I wanted. Thus, regardless of whether you started dragging or not, a new object will still be created.


Here is code on base of valdeezzee's example. We need IInitializePotentialDragHandler and IDragHandler in our first object, which is the button in this case. OnInitializePotentialDrag is called when the button is clicked, so that's the point. But without having IDragHandler this will not work.

 public class FirstObject : MonoBehaviour, IInitializePotentialDragHandler, IDragHandler {
     public GameObject testUI;
     public GameObject parentCanvas;
 
     public void OnInitializePotentialDrag(PointerEventData eventData) {
 
         // Here we instantiate the second object, that we want to drag. 
         GameObject go = Instantiate(testUI, eventData.position, Quaternion.identity);
         go.transform.SetParent(parentCanvas.transform, false);
         //
 
         eventData.pointerDrag = go; // assign instantiated object
     }
     public void OnDrag(PointerEventData eventData) {
     }
 }


The rest is the same. This is the scipt attached to the dragable, fresh created object.

 public class DragableObject : MonoBehaviour, IDragHandler {
     public void OnDrag(PointerEventData eventData) {
         _rectTransform.position = eventData.position;
         Debug.Log("Dragging");
     }
 }
Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image
0

Answer by SunnyPalmSprings · May 21, 2019 at 02:55 PM

You can shoot a ray at the canvas, get the position of where the ray hit and set the object's transform to that position. So it will drag along with your mouse.

Comment
Add comment · Show 5 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image RustyCrow · May 21, 2019 at 03:15 PM 0
Share

I am using OnDrag right now to make my UI element draggable. The issue is the Activation of OnDrag function not actually moving the UI. I could Spawn a X amount if Elements at the start of the level, but if i need an infinite amount its going to get cumbersome to tap 1 to spawn tap again to drag.

avatar image SunnyPalmSprings RustyCrow · May 21, 2019 at 03:16 PM 0
Share

How about shooting a ray ins$$anonymous$$d of using OnDrag() ?

avatar image RustyCrow SunnyPalmSprings · May 21, 2019 at 03:58 PM 0
Share

Graphic Raycaster what you do when using OnDrag . But you are thinking about using actual raycast and Update () to move the UI? hmm i feel like it is a step back unless i am misunderstanding what you are saying. unity has made the current setup to allow for simple manipulation of the UI. If i use the ScreenPoint stuff i would have to make a completely new setup. I might give this a try if i cant find a alternative.

Show more comments
avatar image
0

Answer by RustyCrow · May 23, 2019 at 05:09 PM

So a friend of mine sent me a "reasonable answer" to my question (Original Post).

The TLDR -> You can piggyback off the OnDrag event activation from the Spawner, since you already need to press it once to spawn the UI element. So Spawner.OnDrag { instantiatedObj.draglogic }. The important point is that the OnDrag() calls are now done in the Spawner not on the Draggable UI.

I dont really like this solution as its not the spawners "Job" to have the OnDrag() calls and not to mention the confused PointerEventData as you are now technically dragging the Spawner, but here it is and it works.


I would also like to add and alternative approach, just spawn in the amount of draggable object at the start of the level and just drag them from there.

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

630 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

How to to spawn player, according to id? 0 Answers

instatiates at a bad position 1 Answer

Spawn a power up after asteroid death 1 Answer

Object Spawner 1 Answer

How to Spawn after checking if the clones are destroyed. 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges