Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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
2
Question by CrucibleLab · May 29, 2015 at 07:50 PM · buttononclickevent-listener

Adding onClick listener to an array of buttons

I have an array of buttons (ten to be exact) laid out in a scene. Each button corresponds to a level which can be selected by the player. And these buttons are labeled as 1, 2, 3, ..., 10. Simple stuff.

What I'm trying to do is assign the onClick listener to each of these buttons in a simple, iterative fashion as follows:

 private Button[] btnArray;

 void Start() {
     btnArray = GetComponentsInChildren<Button>();

     int index = 1;
     foreach (Button btn in btnArray) {
         btn.onClick.AddListener(() => Application.LoadLevel(index));
         index += 1;
     }
 }

And as you can easily tell, any button click will take the player to the corresponding level. This approach seems to almost work, except when I click on the first button (i.e., level 1), I get an error that pretty much says, "Level 10 cannot be loaded because it has not been added to the build settings."

Well, it's true that I do not have the Level 10 scene in the build settings (I only have Level 1 for now), but I expected it to take me to the Level 1. So, apparently the index value of '10' was passed to the first button instead of '1'. I'd think this would be an easy fix, but it's proven to be rather tricky. :(

Comment
Add comment · Show 1
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 cjdev · May 30, 2015 at 03:03 AM 1
Share

foreach loops don't necessarily iterate in indexed order, try using a for loop.

1 Reply

· Add your reply
  • Sort: 
avatar image
2

Answer by Mernion · May 30, 2015 at 11:37 AM

This detailed answer could help you: http://answers.unity3d.com/questions/791573/46-ui-how-to-apply-onclick-handler-for-button-gene.html

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

21 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

Related Questions

Move Button OnClick listeners to another button 3 Answers

Canvas button with 2 functions onClick must be pressed twice for 2nd function? Will not disappear? 1 Answer

How to ADD one Buttons.onClick events to another Buttons.onClick? 1 Answer

LoadLevel easy i know, but not working. 1 Answer

Looping through Button Array and checking for OnClick 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