-
[Unity] 인스턴스화 Instantiate의 정리Unity 2022. 7. 25. 15:03
유니티에서의 인스턴스는 이미 만들어진 게임 오브젝트를 필요할 때마다 실시간으로 만든다는 의미이다.
보통 총알이나 몬스터를 찍어낼 때 사용한다.
인스턴스의 매개변수
- GameObject original : 생성하고자 하는 게임오브젝트명. 현재 씬에 있는 게임 오브젝트나 Prefab으로 선언된 객체를 의미한다.
- Vector3 position : Vector3으로 생성될 위치를 설정한다.
- Quaternion rotation :
- 생성될 게임 오브젝트의 회전 값을 지정한다.
- 회전을 굳이 줘야할 상황이 아니라면, 그냥 기본값으로 설정한다. → Quaternion.identity
- 또는 게임오브젝트에서 설정된 회전 값, 즉 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