Unity에서 오브젝트 풀링(Object Pooling)이란 오브젝트를 미리 만들어 쌓아둔 후 필요할 때 꺼내서 사용하고 다 사용했으면 다시 넣어두는 방식을 뜻한다. 이러한 오브젝트 풀링을 사용하는 이유는 Unity에서 오브젝트를 생성하여 메모리를 할당하고 리소스를 초기화하거나 오브젝트를 파괴하여 가비지(Garbage)가 생기고 이런 가비지가 모여 가비지 컬렉터가 동작함으로 인해서 성능 저하가 발생할 수 있고 이러한 문제를 최대한 배제하여 성능을 높이기 위해서다. 동작 방식을 간단하게 설명하면 최초 오브젝트를 담기 위한 오브젝트 풀을 생성하고 오브젝트 풀에 최소한으로 사용할 오브젝트를 생성하여 담아둔다. 그리고 필요할 때 꺼내어 사용하고 다 사용했을 때는 오브젝트 풀에 넣는다. 만약 오브젝트 풀이 비어있..
코루틴은 주로 프레임, 시간 단위로 반복적으로 수행해야 하는 함수 등이 있거나 HTTP 전송, 에셋 로드, 파일 I/O 완료 등을 기다리는 것과 같이 긴 비동기 작업을 처리해야 하는 경우 코루틴을 사용한다. 코루틴을 사용하게 되면 프로세스가 진행되는 중 코루틴이 프로세스를 중단시키고 Unity에서 일시적으로 제어를 가져와 사용하고 다시 Unity에 제어와 선택적 반환 값을 반환하여 중단된 부분에서 다시 시작하게 된다. 다만 코루틴은 다중 스레드를 사용하는 것과는 다르고 메인 스레드에서 실행된다. 실행 방법 아래는 코루틴 메서드의 기본 구조다. IEnumerator Coroutine() { (1) yield break; (2) } 반환 값은 IEnumerator이여야 하며 반환할 때는 yield 문을 사용..
스택(Stack) 영역과 힙(Heap) 영역은 프로그램에서 사용하는 데이터를 관리하기 위한 메모리 영역에 속하며 각 영역의 주요 차이점은 프로그램에서 메모리를 할당하는 방식과 사용하는 방식에 존재한다. 스택(Stack) 영역 스택 영역은 컴파일할 때 크기가 정해지며 함수를 호출할 때 메모리가 쌓이고 함수에 정의된 데이터를 담아두는 영역으로 후입선출(LIFO, Last In First Out)의 특성을 가진다. 함수를 호출할 때 스택 프레임이 생기고 그 안에 호출된 함수의 매개변수, 지역변수, 리턴 값 등을 담아 두며 함수가 종료되면 메모리도 해제된다. 스택 영역의 크기는 제한이 있기 때문에 함수를 너무 많이 반복하여 사용하게 되면 오버플로우가 발생하여 예기치 않은 동작이 발생할 수 있고 이를 최소화할 방..