ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Unity] 인스턴스화 Instantiate의 정리
    Unity 2022. 7. 25. 15:03

    유니티에서의 인스턴스는 이미 만들어진 게임 오브젝트를 필요할 때마다 실시간으로 만든다는 의미이다.

    보통 총알이나 몬스터를 찍어낼 때 사용한다.

    인스턴스의 매개변수

    1. GameObject original : 생성하고자 하는 게임오브젝트명. 현재 씬에 있는 게임 오브젝트나 Prefab으로 선언된 객체를 의미한다.
    2. Vector3 position : Vector3으로 생성될 위치를 설정한다.
    3. Quaternion rotation :
      1. 생성될 게임 오브젝트의 회전 값을 지정한다.
      2. 회전을 굳이 줘야할 상황이 아니라면, 그냥 기본값으로 설정한다. → Quaternion.identity
      3. 또는 게임오브젝트에서 설정된 회전 값, 즉 original.transform.rotation으로 작성해도 된다.

    아래와 같이 선언해서 obj라는 게임오브젝트 객체를 동적으로 생성한다.

    Instantiate(obj, new Vector3(x,y,z), Quaternion.identity); // 그냥 회전 없음
    
    Instantiate(obj, new Vector3(x,y,z), obj.transform.rotation); // obj의 회전값
    

     

    Position과 Rotation을 설정하지 않고 생성

    GameObject UnityEngine.Object.Instantiate<GameObject>(GameObject original, Transform parent)
    

    즉, position과 rotation 설정하지 않고, 특정 하이어 라키 위치에서 생성하기 위해 사용할 수 있다.

    그렇다면, 반대로 Instantiate로 생성한 오브젝트를 제거, 삭제하는 함수는 무엇일까?

    바로 Destroy()함수이다.

    사용법은 Destroy(GameObject obj);이다.

    괄호 안에 게임 오브젝트 객체를 넣으면 제거된다.

    바로 사라지지 않고 짧은 시간을 지연시킨 후에 오브젝트를 파괴하는 것도 가능하다.

    Destroy(GameObject obj, float time);

    두 번째 매개변수로 float형 소수를 적어주면, 그 시간만큼 지연 후 사라지도록 할 수 있다.

    'Unity' 카테고리의 다른 글

    [Unity] Addforce  (0) 2022.08.23
    [Unity] 유니티 생명주기 (Life Cycle)  (0) 2022.07.27
    [Unity] 충돌 처리 Collision / Trigger의 정리  (0) 2022.07.22
    [Unity] 코루틴(Coroutine) 정리  (0) 2022.07.21
Designed by Tistory.