[Unity] Object.Instantiate 정리
간단하게 설명하기!
기존의 object를 복제하여 새로운 object를 생성하는 함수이다.
복제할 때 parameter들을 이용하여 parent object, position, rotation 등의 값들을 지정할 수 있다.
Object.Instantiate
public static Object Instantiate(Object original);
public static Object Instantiate(Object original, Transform parent);
public static Object Instantiate(Object original, Transform parent, bool instantiateInWorldSpace);
public static Object Instantiate(Object original, Vector3 position, Quaternion rotation);
public static Object Instantiate(Object original, Vector3 position, Quaternion rotation, Transfom parent);
Parameters
origianl | 복사본을 만들 기존 개체 |
position | 새로운 개체의 위치 |
rotation | 새로운 개체의 방향 |
parent | 새로운 개체에 할당될 parent |
instantiateInWorldSpace | parent 개체를 할당할 때 전달하는 bool 값 true : 새로운 개체를 월드 공간에 직접 배치하겠다는 뜻 false : 새로운 개체의 위치를 parent에 대해 상대적으로 설정하겠다는 뜻 |
Returns
Object 형태로 리턴.
original object를 Instantiated 시킨 clone을 리턴한다.
이때 Instantiated 되었다는 것은 위의 parameter값들을 적용했다는 뜻으로 이해하면 된다.
Description
- original object를 복제하고 clone을 리턴한다!
- 이 함수는 editor에서 Duplicate command를 하는 것과 비슷한 방식*으로 object의 복사본을 만든다.
- * Hierarchy 창에서 object를 선택하고 Duplicate 하는 것. 단축키로는 Ctrl+D
- GameObject를 복제하는 경우, position과 rotation을 지정할 수 있다.
- default 값은 original GameObject의 position && rotation과 동일하다.
- Component를 복제하는 경우, 그 Component가 부착된 GameObject도 복제된다.
- 지정했다면, position과 rotation 또한 적용되어 복제된다.
- GameObject 또는 Component를 복제하면, 그것의 모든 child object와 component들도 original object의 properties들이 복제됐던 것처럼 properties들이 설정된 상태로 복제된다.
- 새로운 object의 default parent는 null이다; original의 "sibling"이 아니다.
- 그러나, overloadede methods를 사용하여 parent를 설정할 수 있다.
- parent가 지정되고 position과 rotation이 지정되지 않은 경우, original object의 position과 rotation이 복제된 object의 local position과 rotation으로 사용된다.
- instantiateInWorldSpace parameter가 true인 경우에는 월드 공간에서의 position과 rotation이 사용된다.
- position과 rotation이 지정되어 있는 경우에는 그 값들이 월드 공간에서의 object의 position과 roatation으로 사용된다.
- 복제 시 GameObject의 active status는 유지되므로, originals이 inactive일 경우 복제본도 inactive 한 상태로 생성된다. 또한 hierarchy에 있는 object와 모든 child objcet에 대해, 그들의 각각의 Monobehavious와 Component들은 메소드 호출을 하는 시점에서 hierarchy에서 active 할 경우에만 그들의 Awake와 OnEnable 메서드를 호출한다.
- 이 방법들은 새로운 인스턴스화 물체에 prefab connection을 만들지 않는다.
- PrefabUtility.InstantiatePrefab를 사용하면 prefab connection이 있는 object를 만들 수 있다.
Unity Documentation : https://docs.unity3d.com/ScriptReference/Object.Instantiate.html
'etc > Unity' 카테고리의 다른 글
[Unity] Transform 정리 (0) | 2020.06.01 |
---|---|
[Unity] Component.CompareTag 정리 (0) | 2020.06.01 |
[Unity] Raycasthit 정리 (0) | 2020.06.01 |
[Unity] Physics.Raycast 정리 (0) | 2020.06.01 |
댓글
이 글 공유하기
다른 글
-
[Unity] Transform 정리
[Unity] Transform 정리
2020.06.01 -
[Unity] Component.CompareTag 정리
[Unity] Component.CompareTag 정리
2020.06.01 -
[Unity] Raycasthit 정리
[Unity] Raycasthit 정리
2020.06.01 -
[Unity] Physics.Raycast 정리
[Unity] Physics.Raycast 정리
2020.06.01