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 Triggerzz · Feb 20, 2020 at 09:35 PM · c#2dgameobject3d

Find active Child gameobject out of multiple gameobjects

I have a parent (Extras Container) with multiple child gameobjects. I want to add much more gameobjects to this later: alt text

They're all inactive at start, but they all have their own buttons that set them to be active. However, I only want one child gameobject to be active at one time. So when one button gets pressed, all the other gameobjects should be disabled.

So what I want is: When a button is pressed, that child gameobject is active and becomes the "currentObject." All other child gameobjects become inactive. If the same button is pressed, no child gameobjects are active and no objects are the "currentObject."

I have some code that works for now, but it seems extremely inefficient for multiple gameobjects down the road. I just want to find the active child gameobject and set it as the "currentObject."

     public void Update()
     {
         if (currentObject != null)
         {
             currentText.text = currentObject.name;
         }
 
         if (currentObject != cube)
         {
             cube.SetActive(false);
 
             if (currentObject != null)
             {
                 cube.transform.position = currentObject.transform.position;
             }
         }
 
         if (currentObject != sphere)
         {
             sphere.SetActive(false);
             if (currentObject != null)
             {
                 sphere.transform.position = currentObject.transform.position;
             }
         }
 
         if (currentObject != capsule)
         {
             capsule.SetActive(false);
             if (currentObject != null)
             {
                 capsule.transform.position = currentObject.transform.position;
             }
         }
 
         if (currentObject != cylinder)
         {
             cylinder.SetActive(false);
             if (currentObject != null)
             {
                 cylinder.transform.position = currentObject.transform.position;
             }
         }
     }
 
     public void ToggleObject()
     {
         if (currentObject.activeSelf)
         {
             currentObject.transform.position = originalPos;
             currentObject.SetActive(false);
         }
             
     }
 
 
 // HOOKED UP TO THE BUTTONS
 
     public void AddCube()
     {
         currentObject = cube;
         ToggleObject();
     }
 
     public void AddSphere()
     {
         currentObject = sphere;
         ToggleObject();
     }
 
     public void AddCapsule()
     {
         currentObject = capsule;
         ToggleObject();
     }
 
     public void AddCylinder()
     {
         currentObject = cylinder;
         ToggleObject();
     }
 }
extras.png (3.2 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

2 Replies

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

Answer by unity_ek98vnTRplGj8Q · Feb 20, 2020 at 11:09 PM

Here is how I would go about this to make this as easy to work with for tons of children objects as possible. Instead of using separate functions for each, you can use the same function for all of them, passing in the desired index of the object you want. The only weird part is the initialization, because you have to activate all the objects to get their corresponding child indexes.

 public GameObject extrasContainer;
 
 private GameObject currentObject;
 private GameObject[] childrenObjects;
 
 void Start(){
     //Loop through once to activate all children so we can correctly get their child index
     foreach (Transform t in extrasContainer.GetComponentsInChildren<Transform>(true))
     {
         if(t.activeSelf && t.parent == extrasContainer.transform) currentObject = t.gameObject; //Save whichever one you have activated at the start
         t.gameObject.SetActive(true);
     }
 
     //Loop through again to save their child indices
     childrenObjects = new GameObject[extrasContainer.childCount];
     foreach (Transform t in extrasContainer.GetComponentsInChildren<Transform>(true))
     {
         if(t.parent == extrasContainer.transform) childrenObjects[t.GetSiblingIndex()] = t;
     }
 
     //Loop through once more to deactivate the children
     foreach (Transform t in extrasContainer.GetComponentsInChildren<Transform>(true))
     {
         if(t.gameObject != currentObject){
             if(t.parent == extrasContainer.transform) t.gameObject.SetActive(false);
         }
     }
 }
 
 public void ChooseObject(int index){
     if(index < extrasContainer.transform.childCount){
         GameObject newObject = childrenObjects[index].gameObject;
         if(newObject != currentObject){
             if(currentObject != null) currentObject.SetActive(false);
             newObject.SetActive(true);
             currentObject = newObject;
         }
         else{
             currentObject.SetActive(false);
             currentObject = null;
         }
     }
 }

So if you have your objects ordered like you do in your screenshot and you want to activate the cube, you would call ChooseObject(0);. If you want to call this function from a button, you can set the associated index value in the inspector. The nice thing about this is that when you want to add new objects, you don't have to write any new code. Just put your new object as the last child object of the extras container, and give the corresponding button the ChooseObject callback with the index of the new object.

Comment
Add comment · Show 3 · 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 Triggerzz · Feb 21, 2020 at 09:51 PM 0
Share

Hey, thanks so much for the reply and help! This way does look way more efficient for dealing with multiple gameobjects!

I tried to apply the code and I do get a few errors though.

alt text

The first error is referring to this line: if (t.activeSelf && t.parent == extrasContainer.transform) currentObject = t.gameObject;

The second is referring to this line: childrenObjects = new GameObject[extrasContainer.childCount];

And the third is referring to this line: if (t.parent == extrasContainer.transform) childrenObjects[t.GetSiblingIndex()] = t;

errors.png (24.7 kB)
avatar image unity_ek98vnTRplGj8Q Triggerzz · Feb 21, 2020 at 10:47 PM 1
Share

Yea my bad I didn't test the code -
1. Change t.activeSelf to t.gameObject.activeSelf
2. Change extrasContainer.childCount to extrasContainer.transform.childCount
3. Change that last t to t.gameObject

I just got my gameobjects and transforms mixed up a couple times

avatar image Triggerzz unity_ek98vnTRplGj8Q · Feb 22, 2020 at 04:09 AM 0
Share

Well it all works perfectly now! Wow, thanks so much for your help!

avatar image
1

Answer by prakyathd801 · Nov 10, 2020 at 11:30 AM

 if(childName.gameObject.activeSelf)
             {
 //Do something
             }
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

828 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 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 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 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 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 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

Make a 3D Object look like hes facing a point in an 2D space 0 Answers

Scale of object does not update properly with public variable 1 Answer

How can I make the game object follow the mouse? 1 Answer

Collision detection in 2017 3d 4.2f2 0 Answers

Set One GameObject Inactive If Another GameObject Is Active? 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