• 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 twotostudio · Sep 22, 2020 at 02:08 PM · listparentchild

Adding children to the list during the game.

I have objects stacked throughout the game. And each object added to the top becomes the child of the bottom object (lefthand). I'm trying to find the last child and reach his place. I'm trying to add kids to my list with the code below. However, when I check, children are not added to the list. There must be a mistake but I couldn't find what happened.

 public class move : MonoBehaviour
 {
    
   public GameObject lefthand;
   public GameObject righthand;
   public Animator anim;
   public float speed;
    public GameObject lefttrig;
    public List<GameObject> childleft = new List<GameObject>();
     
 
     private void Start()
     {
        
 
         if (lefthand.transform.childCount>0)
         {
             foreach (Transform t in lefthand.transform)
             {
                
                childleft.Add(t.gameObject);
            
             }
         }
        
     }
 
     private void Update()
   {
        
 
        GameObject lastchild = childleft[childleft.Count-1];
 
        if (lefthand.transform.childCount>1)
        {
           lefttrig.transform.position = lastchild.transform.position;
         }
       }
      
ekran-alıntısı.png (22.7 kB)
Comment
Add comment · Show 20
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 twotostudio · Sep 22, 2020 at 02:19 PM 0
Share

When I control the number of children it increases. There is no problem with it.

avatar image N-8-D-e-v twotostudio · Sep 22, 2020 at 02:32 PM 0
Share

Clear your list after you are done adding, also, look into other collection types I'm not sure which one, but one is more performant when adding things to first and last (I think LinkedList)

avatar image twotostudio N-8-D-e-v · Sep 22, 2020 at 02:38 PM 0
Share

I did not understand the cleaning after the addition was finished. The addition does not end throughout the game.

avatar image N-8-D-e-v twotostudio · Sep 22, 2020 at 02:50 PM 0
Share

oh whoops, I'm not sure why I suggested that, in your start function, you are only adding one thing to the list, which is lefthand.transform, because it only has one transform component. You probably want this

 childLeft = GetComponentsInChildren<Transform>();
avatar image twotostudio N-8-D-e-v · Sep 22, 2020 at 02:55 PM 0
Share

Am I not defining childleft as a list? I am confused as to where to define this.

avatar image N-8-D-e-v twotostudio · Sep 22, 2020 at 03:06 PM 0
Share

no no, you are doing foreach Transform t in lefthand.transform there is only one transform in leftHand.transform, you probably want leftHand.GetComponentsInChildren()

avatar image twotostudio N-8-D-e-v · Sep 22, 2020 at 03:12 PM 0
Share
         if (lefthand.transform.childCount>0)
         {
             
             foreach (Transform t in lefthand.GetComponentInChildren<Transform>())
             {
                
                childleft.Add(t.gameObject);
            
             }
         }

I wrote this but still didn't add it to the list

avatar image N-8-D-e-v twotostudio · Sep 22, 2020 at 04:40 PM 0
Share

it should GetComponentsInChildren<Transform>() not GetComponentInChildren<Transform>()

avatar image twotostudio N-8-D-e-v · Sep 22, 2020 at 04:45 PM 0
Share

yes but still not working.

avatar image N-8-D-e-v twotostudio · Sep 22, 2020 at 05:00 PM 0
Share

show me your code

avatar image twotostudio N-8-D-e-v · Sep 22, 2020 at 05:06 PM 0
Share
 public class move : $$anonymous$$onoBehaviour
 {
    public GameObject lefthand;
    public GameObject lefttrig;
    public List<GameObject> childleft;
   
     private void Start()
     {
         childleft = new List<GameObject>();
         if (lefthand.transform.childCount>0)
         {
             
             foreach (Transform t in lefthand.GetComponentsInChildren<Transform>())
             {
                
                childleft.Add(t.gameObject);
            
             }
         }
        
     }
 
     private void Update()
   {
          /*GameObject lastchild = childleft[childleft.Count-1];
 
        if (lefthand.transform.childCount>1)
        {
           lefttrig.transform.position = lastchild.transform.position;
         }
       */
 

this is my code now. I'm checking because my list is of public type. However, nothing is added to the list.

avatar image twotostudio twotostudio · Sep 22, 2020 at 05:07 PM 0
Share

Objects that are children come to the stage with the instantiate code. And when he touches his left hand, they become his children.

avatar image N-8-D-e-v twotostudio · Sep 22, 2020 at 05:57 PM 0
Share

try debug.log-ging the amount of children that left hand has in start

avatar image twotostudio N-8-D-e-v · Sep 22, 2020 at 06:01 PM 0
Share

there are no children at first. Previously, I checked the number of children by printing the number of children. Is increasing. However, I cannot understand why I cannot add children to the list.

avatar image N-8-D-e-v twotostudio · Sep 22, 2020 at 06:06 PM 0
Share

probably because leftHand has 0 children

avatar image twotostudio N-8-D-e-v · Sep 22, 2020 at 06:15 PM 0
Share

put an empty object child in the left hand of the stage. And with these codes, only the empty object and the left side are added to the list. He did not add objects that were children during the game.

avatar image N-8-D-e-v twotostudio · Sep 22, 2020 at 06:21 PM 0
Share

this is what's happening

avatar image twotostudio N-8-D-e-v · Sep 22, 2020 at 06:31 PM 0
Share

I guess I have to use other things. Thanks anyway

avatar image twotostudio twotostudio · Sep 23, 2020 at 01:49 AM 0
Share

The reason it only added the initial child objects is because I wrote it in the start function. However, the operation we made with the foreach loop was not working in the update function. I followed another method using the for loop and when I did it in the update function, it gave the result I wanted.

Show more comments

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by jmgek · Sep 22, 2020 at 07:22 PM

You should be really thinking about making a parent class and have a List<GameObject> children that you add to every time you attach a child.

 public class Child : Parent{
     void AddToParent(){
         //Add to parent transform
         base.children.Add(this);
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.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

140 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

Related Questions

Make a simple tree 1 Answer

A node in a childnode? 1 Answer

Find out if two children/gameObjects have the same parent. 2 Answers

Cannot cast from source type to destination type. 1 Answer

accessing all of a colliders parents children 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