Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. We’re making changes to the Unity Runtime Fee pricing policy that we announced on September 12th. Access our latest thread for more information!
    Dismiss Notice
  3. Dismiss Notice

Info on performance

Discussion in 'Getting Started' started by Ardito, Mar 18, 2015.

  1. Ardito

    Ardito

    Joined:
    Feb 24, 2013
    Posts:
    10
    Which of these two codes using less resource?

    Better to use the Find or FindChild, because objects are children of Obj1?

    void Start()
    {
    //Example 1

    if(value == 0) transform.Find("Obj1").position = new Vector3(mov + transform.position.x,transform.position.y,transform.Find("Obj1").position.z);
    else if(value == 1) transform.Find("Obj1").position = new Vector3(-mov + transform.position.x,transform.position.y,transform.Find("Obj1").position.z);
    else if(value == 2) transform.Find("Obj1").position = new Vector3(transform.position.x,mov + transform.position.y,transform.Find("Obj1").position.z);
    else if(value == 3) transform.Find("Obj1").position = new Vector3(transform.position.x,-mov + transform.position.y,transform.Find("Obj1").position.z);

    if(mov != 0)
    {
    transform.Find("Obj1").Find("Obj2").position = new Vector3((transform.Find("Obj1").position.x + transform.position.x)/2,transform.Find("Obj1").Find("Obj2").position.y,transform.Find("Obj1").Find("Obj2").position.z);
    transform.Find("Obj1").Find("Obj2").localScale = new Vector3((transform.Find("Obj1").position.x - transform.position.x)/2,1,1);

    transform.Find("Obj1").Find("Obj3").position = new Vector3(transform.Find("Obj1").Find("Obj3").position.x,(transform.Find("Obj1").position.y + transform.position.y)/2,transform.Find("Obj1").Find("Obj3").position.z);
    transform.Find("Obj1").Find("Obj3").localScale = new Vector3((transform.Find("Obj1").position.y - transform.position.y)/2,1,1);

    transform.Find("Obj1").Find("Obj4").renderer.enabled = true;
    }
    }

    void Start()
    {
    //Example 2

    Transform Obj1Pos = transform.FindChild("Obj1");
    Transform Obj2Pos = Obj1Pos.FindChild("Obj2");
    Transform Obj3Pos = Obj1Pos.FindChild("Obj3");
    Transform Obj4Pos = Obj1Pos.FindChild("Obj4");

    if(value == 0) Obj1Pos.position = new Vector3(mov + transform.position.x,transform.position.y,Obj1Pos.position.z);
    else if(value == 1) Obj1Pos.position = new Vector3(-mov + transform.position.x,transform.position.y,Obj1Pos.position.z);
    else if(value == 2) Obj1Pos.position = new Vector3(transform.position.x,mov + transform.position.y,Obj1Pos.position.z);
    else if(value == 3) Obj1Pos.position = new Vector3(transform.position.x,-mov + transform.position.y,Obj1Pos.position.z);

    if(mov != 0)
    {
    Obj2Pos.position = new Vector3((Obj1Pos.position.x + transform.position.x)/2,Obj2Pos.position.y,Obj2Pos.position.z);
    Obj2Pos.localScale = new Vector3((Obj1Pos.position.x - transform.position.x)/2,1,1);

    Obj3Pos.position = new Vector3(Obj3Pos.position.x,(Obj1Pos.position.y + transform.position.y)/2,Obj3Pos.position.z);
    Obj3Pos.localScale = new Vector3((Obj1Pos.position.y - transform.position.y)/2,1,1);

    Obj4Pos.renderer.enabled = true;
    }
    }
     
  2. Ardito

    Ardito

    Joined:
    Feb 24, 2013
    Posts:
    10
    Pls Help me
     
  3. Schneider21

    Schneider21

    Joined:
    Feb 6, 2014
    Posts:
    3,510
    Since you're doing this in the Start function (which runs only once), you're not going to be noticing too big a performance hit, but generally you want to do any kind of Find as little as possible. Instead of finding Obj1, Obj2, Obj3 over and over again like in the first example, Find them once and save a reference as in the second. I think the difference in performance you'd notice between Find and FindChild would be negligible, but should technically be better with FindChild, as it doesn't have to search the whole scene.
     
  4. Ardito

    Ardito

    Joined:
    Feb 24, 2013
    Posts:
    10
    Thanks, your answer is perfect !!
     
    Schneider21 likes this.