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 /
avatar image
0
Question by Burgundxyz · Sep 03, 2015 at 07:31 PM · javascriptarraysgameobject.findgameobject

Remove all objects that a certain type

At the moment using this, #pragma strict

function OnMouseDown() { //Turns off yellow var yellow = GameObject.Find("Yellow(Clone)"); while (yellow != null) { yellow.SetActive(true); yellow = GameObject.Find("Yellow(Clone)"); }

Debug.Log("Took off yellow");

//Turns on green var green = GameObject.Find("GreenSwitch(Clone)"); while (green != null) { green.SetActive(false); green = GameObject.Find("GreenSwitch(Clone)"); }

}

But this is highly unefficient because when an object is turned on that needs to be activated, the game freezes.

Any other ideas?

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

2 Replies

· Add your reply
  • Sort: 
avatar image
0

Answer by kingcoyote · Sep 03, 2015 at 07:47 PM

You've created an infinite loop here:

 while (yellow != null) {
     yellow.SetActive(true);
     yellow = GameObject.Find("Yellow(Clone)");
 }

If there is any active game object called "Yellow(Clone)", this loop will never exit, because yellow will never be null.

Is your objective to loop through all objects called "Yellow(Clone)"? Because GameObject.Find only finds the first instance, not all instances, and it doesn't return anything enumerable.

Your best bet is probably to tag all of the Yellow(Clone) objects with a specific tag and use GameObject.FindGameObjectsWithTag() to get a list of all of them.

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 willparsons · Sep 03, 2015 at 08:09 PM

Don't use while. Use if.

 function OnMouseDown()
 {
 if(yellow != null && green != null)
 yellow.SetActive(!yellow.activeInHierachy);
 green.SetActive(!yellow.activeInHierachy);
 }


That will set the yellow to the opposite of it's current active state, then set green opposite to that, so they will always be opposite.

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

31 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

Related Questions

need to shorten my code but unsure of how 3 Answers

Random an Array to push to another Array 0 Answers

Getting C# to access a javascript global Array and Components 1 Answer

How would I call upon an asset in the projects tab with an array? 1 Answer

Using arrays and for loop with GetComponent error 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