Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 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 Xaos95 · Sep 11, 2017 at 02:55 PM · 2dbuttoneventonclickcalling

How to call an Event trigger on a button through script?

I am making a 2D top down car game where as i have 8 different cars and each and one of them has a controller script. I wan't it so that whenever hold down a button the car will turn left which i have achieved but my only problem is that it only works for one car, the car i dragged into the listener field. I know how to call functions with "onclick" through script but since i need to hold the button down i used the event trigger component.

The event types i used were PointerDown and PointerUp.

Comment
Add comment · Show 4
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 HammerCar · Sep 11, 2017 at 03:01 PM 0
Share

Why do you want UI Buttons as controls of your cars? Wouldn't it be easier to use the normal Input class if you just want mouse input?

avatar image Xaos95 HammerCar · Sep 11, 2017 at 03:49 PM 0
Share

$$anonymous$$y game is supposed to be a mobile game. Sorry, i should have mentioned this earlier.

avatar image Hellium · Sep 11, 2017 at 03:42 PM 0
Share

Check the following link : https://stackoverflow.com/documentation/unity3d/2296/user-interface-system-ui#t=20170911154148529932

avatar image Xaos95 Hellium · Sep 11, 2017 at 04:15 PM 0
Share

Thanks, but where am i supposed to call my function? I typed in the script and added it to my button and the script worked, but what is it in the script that i have too change in order to call my function?

Here is the script:

 [RequireComponent(typeof( EventTrigger ))]
 public class TurnController : $$anonymous$$onoBehaviour
 {
 
     Car2DController car2DController;
 
     void Start( )
     {
         EventTrigger eventTrigger = GetComponent<EventTrigger>( );
         EventTrigger.Entry entry = new EventTrigger.Entry( );
         entry.eventID = EventTriggerType.PointerDown;
         entry.callback.AddListener( ( data ) => { OnPointerDownDelegate( (PointerEventData)data ); } );
         eventTrigger.triggers.Add(entry);
 
 
         car2DController = GameObject.FindGameObjectWithTag ("Car").GetComponent<Car2DController> ();
     }
 
     public void OnPointerDownDelegate( PointerEventData data )
     {
         Debug.Log( "OnPointerDownDelegate called." );
     }
 }
 

Ask me if you need to see the car controller script.

1 Reply

· Add your reply
  • Sort: 
avatar image
1
Best Answer

Answer by Hellium · Sep 11, 2017 at 07:20 PM

Try something like the following code. But, since I don't know your Car2DController, you will have to make appropriate changes

  public class TurnController : MonoBehaviour
  {
      UnityEngine.UI.Button rightButton ;
      UnityEngine.UI.Button leftButton ;
      Car2DController car2DController;
  
      void Start( )
      {
          AddRightButtonEvents();
          AddLeftButtonEvents();
  
  
          car2DController = GameObject.FindGameObjectWithTag ("Car").GetComponent<Car2DController> ();
      }
      
      void AddRightButtonEvents()
      {
          EventTrigger eventTrigger = rightButton.gameObject.AddComponent<EventTrigger>( );
          
          EventTrigger.Entry pointerDownEntry = new EventTrigger.Entry( );
          pointerDownEntry.eventID = EventTriggerType.PointerDown;
          pointerDownEntry.callback.AddListener( ( data ) => { OnRightButtonDown( (PointerEventData)data ); } );
          eventTrigger.triggers.Add(pointerDownEntry);
          
          EventTrigger.Entry pointerUpEntry = new EventTrigger.Entry( );
          pointerUpEntry.eventID = EventTriggerType.PointerUp;
          pointerUpEntry.callback.AddListener( ( data ) => { OnRightButtonUp( (PointerEventData)data ); } );
          eventTrigger.triggers.Add(pointerDownEntry);         
      }
  
      public void OnRightButtonDown( PointerEventData data )
      {
          car2DController.goLeft = false ;
          car2DController.goRight = true ;
      }
  
      public void OnRightButtonUp( PointerEventData data )
      {
          car2DController.goRight = false ;
      }
      
      void AddLeftButtonEvents()
      {
          EventTrigger eventTrigger = leftButton.gameObject.AddComponent<EventTrigger>( );
          
          EventTrigger.Entry pointerDownEntry = new EventTrigger.Entry( );
          pointerDownEntry.eventID = EventTriggerType.PointerDown;
          pointerDownEntry.callback.AddListener( ( data ) => { OnLeftButtonDown( (PointerEventData)data ); } );
          eventTrigger.triggers.Add(pointerDownEntry);
          
          EventTrigger.Entry pointerUpEntry = new EventTrigger.Entry( );
          pointerUpEntry.eventID = EventTriggerType.PointerUp;
          pointerUpEntry.callback.AddListener( ( data ) => { OnLeftButtonUp( (PointerEventData)data ); } );
          eventTrigger.triggers.Add(pointerDownEntry);         
      }
  
      public void OnLeftButtonDown( PointerEventData data )
      {
          car2DController.goRight = false ;
          car2DController.goLeft = true ;
      }
  
      public void OnLeftButtonUp( PointerEventData data )
      {
          car2DController.goLeft = false ;
      }
  }
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 Xaos95 · Sep 12, 2017 at 12:26 PM 0
Share

Thank you! This was the answer i was looking for even though it took me some time to get everything in order but still, Thanks a lot!

avatar image moustaphaaussie · Feb 03, 2021 at 11:00 PM 0
Share

thanks but you need to fix something

here void AddRightButtonEvents() { EventTrigger eventTrigger = rightButton.gameObject.AddComponent( );

       EventTrigger.Entry pointerDownEntry = new EventTrigger.Entry( );
       pointerDownEntry.eventID = EventTriggerType.PointerDown;
       pointerDownEntry.callback.AddListener( ( data ) => { OnRightButtonDown( (PointerEventData)data ); } );
       eventTrigger.triggers.Add(pointerDownEntry);
       
       EventTrigger.Entry pointerUpEntry = new EventTrigger.Entry( );
       pointerUpEntry.eventID = EventTriggerType.PointerUp;
       pointerUpEntry.callback.AddListener( ( data ) => { OnRightButtonUp( (PointerEventData)data ); } );
       eventTrigger.triggers.Add(pointerDownEntry);         
   }

pointerDownEntry parameter is added to the up and down event

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

141 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

Related Questions

Activate 2 separate OnClick events, with the different Mouse Buttons 2 Answers

How to access the OnClick event via Script 1 Answer

OnClick() problem with Button script: "Deleting an array element will copy the complete array to all..." 1 Answer

Move Button OnClick listeners to another button 3 Answers

How to detect button presses and change child object text in the button's Parent Object script 0 Answers


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