728x90
게임을 제작함에 있어 오브젝트의 생성과 파괴는 메모리와 관련하여 중요한 부분입니다. 유니티에서는 생성과 파괴에 대한 함수를 미리 정의해주는데 제공해주는 함수는 다음과 같습니다.
- 오브젝트 생성 함수: Instantiate()
- 오브젝트 파괴 함수: Destroy()
우선, 오브젝트 생성 함수에 대해 알아보겠습니다. 아래의 코드에서 확인할 수 있듯이 Instantiate는 2개의 오버로드 함수를 가지고 있습니다. 하나는 생성 오브젝트만 입력하는 것 다른 하나는 생성 오브젝트와 생성 위치, 생성할 때의 회전 값을 입력으로 받습니다. 각각의 함수 기능은 다음과 같습니다. 편의상 코드의 순서에 맞게 첫 번째, 두 번째로 표현하겠습니다.
- 첫 번째 함수는 생성 오브젝트만을 입력받으므로 나머지 생성 위치나 회전 값은 프리팹에 저장되어 있는 값을 사용하여 오브젝트를 생성하게 됩니다.
- 두 번째 함수는 생성 오브젝트와 그 위치, 회전 값을 모두 입력받으므로 위치와 회전 값에 맞게 오브젝트를 생성합니다.
1
2
|
public static Object Instantiate(Object original);
public static Object Instantiate(Object original, Vector3 position, Quaternion rotation);
|
다음은 오브젝트 파괴 함수에 대해 알아보겠습니다. 생성과는 달리 위치와 회전값이 필요하지 않아 상대적으로 간단한 구조를 가지고 있습니다. 생성 함수와 마찬가지로 2개의 오버로드 함수를 가지고 있습니다. 하나는 파괴할 오브젝트만을 입력받고 다른 하나는 파괴할 오브젝트와 몇 초 뒤에 파괴할지에 대해 입력을 받습니다. 생성과 마찬가지로 코드 순서에 맞게 설명하겠습니다.
- 첫 번째 함수는 파괴할 오브젝트를 입력받고 시간을 입력하지 않았으므로 오브젝트를 즉시 파괴합니다.
- 두 번째 함수는 파괴할 오브젝트와 시간을 입력받으므로 실행 후 t에 정의된 시간이 흐른 뒤에 오브젝트를 파괴합니다.
1
|
public static void Destroy(Object obj);
public static void Destroy(Object obj, float t = 1.0F);
|
앞서 언급하였듯이 오브젝트의 생성과 파괴는 메모리를 사용하기 때문에 개발에 있어 신중해야 하고 이와 관련하여 메모리를 효율적으로 사용하기 위한 기법들이 있습니다. 해당 기법들과 관련하여 학습을 진행하시면 많은 도움이 될 것 같습니다.
728x90
'Unity' 카테고리의 다른 글
[Unity] ScriptableObject 가 뭐야? (0) | 2020.11.12 |
---|---|
[Unity] 유니티에서 Enum 변수를 사용하는 법 (0) | 2020.11.11 |
[Unity] GetCurrentAnimatorStateInfo로 애니메이션 상태 체크하기 (0) | 2020.06.23 |
[Unity] 공중에 있는 땅 통과 후 착지 구현 (0) | 2020.06.15 |
[Unity] Video Player 페이드 인, 페이드 아웃 효과 만들기 (2) (0) | 2020.06.13 |