본문 바로가기
  • 불확실한 내일을 위해
유니티 C#/C#

C#기초 - Find함수 사용법 및 예시

by 그린초코 2024. 4. 23.

find 함수는 컴포넌트를 검색하여 이름을 검색하여 가져오는 것을 말한다.

예를 들어 GameObject.Find() 함수의 인수로 오브젝트 이름을 지정하면 씬 내에서 해당 오브젝트를 찾아 GameObject 타입으로 반환한다. 

 

-Find함수 예시

using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;

public class Stury6_find : MonoBehaviour
{
    public GameObject findCamera1; // 변수선언
    
    void Start()
    {
        findCamera1 = GameObject.Find("Main Camera"); 
        // findCamera1에 Main Camera오브젝트를 검색하여 변수에 할당한다. 
    }
}

위처럼 작성하면  Main Camera 이름으로 된 해당 오브젝트를 찾아 GameObject 타입으로 findCamera1 변수에 할당된다. 

따라서 이를 오브젝트에 적용 후 플레이해보면 인스펙터에는 아래와 같은 결과가 나오게 된다. 

 

 

씬 내의 모든 오브젝트가 아니라 자식 오브젝트 중에서만 검색하고 싶을 때는 Transform 컴포넌트를 사용하면 된다.

(오브젝트의 부모-자식 관계는 Transform 컴포넌트에 속한다.)

 

-자식오브젝트에서 Find함수 쓰기 예시

이런식으로 부모오브젝트가 Cube이고 자식오브젝트가 Main Camera 일 경우 아래와 같이 스크립를 쓰고 부모오브젝트에 적용한다. 

using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;

public class Stury6_find : MonoBehaviour
{
    public GameObject findCamera2; // 변수선언

    void Start()
    {
        findCamera2 = transform.Find("Main Camera").gameObject;
        //자식오브젝트 중 Main Camera를 검색한 후 GameObject컴포넌트를 가져와 변수에 할당한다. 
    }
}

 

그런 뒤 플레이해보면 Cube 오브젝트의 인스펙터에 아래와 같이 적용되는 것을 확인할 수 있다. 

이때 Find()함수는 Main Camera오브젝트의 transform 컴포넌트로 GameObject 컴포넌트를 findCamera2변수에 할당한 것이라고 볼 수 있다. 

728x90

댓글