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 vittu1994 · Apr 23, 2016 at 04:16 PM · arrayloopforeachactiveelements

how to check all elements in array

Hi i have an array of gameobjects (they are actually buttons). I want to check when ALL of these buttons are disabled (SetActive(false));

 public void CheckCondition(int amount)
         {
             if (shipMax[amount] <= 0)
             {
                 buttons[amount].SetActive(false);
             }
             else if (shipMax[amount] > 0)
             {
                 buttons[amount].SetActive(true);
             }
         }

This is how they get disabled. Each button handles an int and when this int is 0 the button gets disabled.

I looked up here and there seemed to be many answers already to this problem so i tried this out:

  void StartGame()
     {
         for(int i = 0; i < buttons.Length; i++)
         {
             if(buttons[i].activeSelf == false)
             {
                 Debug.Log("ready");
                 break;
             }
         }
     }

I have this foreach loop running in Update(). However whenever just ONE of the elements inside the array gets disabled it already prints "ready". Its supposed to print "ready" when all of the elements in the arra are disabled.

Is it that im running in Update()? Do i need to call this loop somewhere else? Did i write something wrong?

Thanks

Comment
Add comment · Show 2
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 Cherno · Apr 23, 2016 at 04:42 PM 0
Share

If you only want to print "ready" when all buttons are disabled, do it like this:

 int disabledCounter = 0;
 for(int i = 0; i < buttons.Length; i++)
          {
              if(buttons[i].activeSelf == false)
              {
                  disabledCounter ++;
              }
          }
  if(disabledCounter == buttons.Length - 1) {
       Debug.Log("ready");
  }
avatar image vittu1994 Cherno · Apr 23, 2016 at 05:20 PM 0
Share

the "ready" was mostly a test to see if it works. Your example helped so that the "ready" was not spammed atleast in the console because of update().

However the problem still persists. I disabled the first button and ready was printed once. But i have 3 more buttons still that are active in the array. It seems as long as i disable one button (doesnt matter which one): ready will be called.

Dont know whats going on lol

2 Replies

· Add your reply
  • Sort: 
avatar image
0

Answer by jgodfrey · Apr 23, 2016 at 05:31 PM

Something like this should work:

 bool allDisabled = true;
 for(int i = 0; i < buttons.Length; i++)
 {
    if (buttons[i].activeSelf) { allDisabled = false; break; }
 }
 
 if (allDisabled) { Debug.Log("ready"); }
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 vittu1994 · Apr 23, 2016 at 05:39 PM 0
Share

ready gets written directly since allDisabled is true from the very start.

avatar image jgodfrey vittu1994 · Apr 23, 2016 at 08:13 PM 0
Share

Ummm... No. Did you even try this code?

It does this:

  • Sets allDisabled to true at the start

  • Loops through each item. As soon as it finds one that is active, it sets allDisabled=false and exits the loop.

  • If it doesn't find one that is active, then it exits the loop with allDisabled=true.

So, by the time it gets to the last "if", allDisabled will be set appropriately.

avatar image
0

Answer by mohit415 · Dec 14, 2016 at 09:53 PM

for future reference:

  bool allDisabled = true;
          for(int i = 0; i < buttons.Length; i++)
          {
             if (buttons[i].activeSelf) { 
                     allDisabled = false; 
                      break;
                       }
                 else {
                       allDisabled = true; 
                           }
          }
          
          if (allDisabled) { 
                Debug.Log("ready"); 
               }
 

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

47 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

Related Questions

Facebook SDK Json Parsing with foreach loop not updating 1 Answer

Set variables in an array dependent on which scene the player is in. 1 Answer

index out of range problem with for loops and arrays. 1 Answer

How to deal with a missing reference when an object referred each frame from an array is destroyed along the way? 2 Answers

Different Score for Active OnMouseDown objects 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