Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 11 Next capture
2021 2022 2023
1 capture
11 Jun 22 - 11 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 khos85 · Jul 16, 2015 at 07:37 PM · childrenenable

How to randomly disable/enable children objects in parent object?

Hi,

I would like to be able to randomly turn off renderers in any of the children on a parent object, e.g. if I press the minus key less and less child objects are shown, if I press plus key then they come back gradually the more I press the plus key. I want to do this to help with game performance so players can adjust the level of details..have no idea how to code this..yet.. and would appreciate your input.

Here is what I have tried:

  if(Input.GetKeyDown(KeyCode.Minus))
       var obj1 : GameObject =  GameObject.Find("myparentobj");
       var allChildren = obj1.GetComponentsInChildren(Transform);
         for (i=0;i<allChildren.Length ;i++) {
           try {  
           if(allChildren[i]==(Random.Range(0, allChildren.childCount)))
               var child : Transform in allChildren3[i];
               child.gameObject.GetComponent(MeshRenderer).enabled = false;}
            catch (err) { }
         } 

Can someone help me out with this?

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 Bluk · Jul 16, 2015 at 07:46 PM 0
Share

Please format your code with the "01010" button. It is unreadable as is. Also i think you have bad copy/paste in it.

2 Replies

· Add your reply
  • Sort: 
avatar image
2

Answer by Bluk · Jul 16, 2015 at 08:17 PM

Okay so a few things first:

  • When posting here, be precise in what you ask. Here we don't even know what's not working (everything according to the code you posted).

  • Get to code in C#, it's less permissive, and will help you in the end.

  • At least try to post a valid code, without 10 syntax errors.

Now your solution:

 for (var i=0;i<allChildren.Length ;i++) {
    try {  
        var rdm = Random.Range(0, allChildren.Length);
        for (var child : Transform in allChildren[i]) {
            child.gameObject.GetComponent(MeshRenderer).enabled = false;
        }
        }
        catch (err) {}

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 Jessespike · Jul 16, 2015 at 08:01 PM

Random.Range will generate a new number each time it is called. Move the Random.Range outside of the for loop, and store the result into an int. You can also do a check to see if the selected random object is already active, if it is, keep generating new random number until you have an inactive object selected. To avoid an infinite loop, you can store the inactive objects in a list and randomly select one of them from that new list. Also omitting curly braces {} makes the code harder to follow, I'd suggest you define your scopes always.

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

22 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

Related Questions

How to enable children of child game object? 1 Answer

Getting an objects Children 1 Answer

Don't react to colliders in children. 0 Answers

enable/disable child objects? 2 Answers

How to select BoxColliders of children and disable them? 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