Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 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 /
  • Help Room /
avatar image
0
Question by MoiLoy · Nov 10, 2015 at 11:13 PM · javascriptui

How do change UI.button onclick variables via script?(JS)

How do change UI.button onclick variables via script? alt text

123.png (4.3 kB)
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

1 Reply

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

Answer by Statement · Nov 11, 2015 at 12:06 AM

Use Button.onClick. See also ButtonClickedEvent.

 #pragma strict
 
 var button : UI.Button;
     
 function Start()
 {
     button.onClick.AddListener(CallMePlease);
 }
     
 function CallMePlease()
 {
     print ("Button surely was clicked");
 }

To pass a value to the function, you must "curry" or "adapt" the delegate because onClick.AddListener accept a delegate with no arguments. To do this, simply create an anonymous function that adapts the call.

 #pragma strict
 
 var button : UI.Button;
     
 function Start()
 {
     // "Currying" or "adapting" the call to CallMePlease
     button.onClick.AddListener( function() { CallMePlease (3); } );
 }
     
 function CallMePlease(value : int)
 {
     print ("Button surely was clicked: " + value);
 }

You can also create functions that can help you with adapting the functions in various ways. I'll just give you an example of doing the above, but instead of directly writing the code to adapt the function where its used, you can make a builder function (here called Adapt)

 #pragma strict
 
 var button : UI.Button;
     
 function Start()
 {
     // I chose to go with calling it adapting the function mostly 
     // because I don't really know if currying is the correct phrase 
     // to use since we reduce the arguments entirely. What we want
     // to do regardless of the vocabulary used is to adapt the function
     // CallMePlease(int) into the form CallMePlease().
     button.onClick.AddListener(Adapt(CallMePlease, 4));
 }
 
 // Accepts a function(int) reference and returns a function() reference.
 // When calling the function returned, it will call function(value).
 function Adapt(callback : function(int), value : int) : function()
 {
     return function () { callback (value); };
 }
     
 function CallMePlease(value : int)
 {
     print ("Button surely was clicked: " + value);
 }
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 MoiLoy · Nov 11, 2015 at 01:48 PM 0
Share

i need to send variable too.

Like function Start() { button.onClick.AddListener(Call$$anonymous$$ePlease(22)); }

function Call$$anonymous$$ePlease(mapID :int) { print ("map id ="+mapID); }

avatar image Statement · Nov 11, 2015 at 02:16 PM 0
Share

Updated my answer on how to make a callback that pass an integer.

Basically, you're calling a function that calls another function with the number.

onClick calls the function() { Call$$anonymous$$ePlease(22); }, which in turn calls function Call$$anonymous$$ePlease(mapID : int) { /* ... code... */ }

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

4 People are following this question.

avatar image avatar image avatar image avatar image

Related Questions

How do you access the text value of the Dropdown UI? 6 Answers

Tips and Tricks Menu Help 1 Answer

How add(create) a new gameobject on scene on mouse button click. 2 Answers

Unable to assign value to Text 0 Answers

Right Click Load Scene help! 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