Unity를 다시 시작하거나 빌드할 때 Rect Transforms의 Y가 기존에 저장되어 있던 값과 다른 값으로 변경되는 현상이 발생했다. 해당 현상의 원인을 찾아봤을 때 유니티 버전의 문제였고 현재 사용하고 있는 2022.3.4f1 버전에서 발생하는 현상이었다. 해당 버그는 유니티 버전 2021.3.29f1 및 2022.3.5 f1에서는 고쳐졌다고 한다. 2022.3.7f1 버전에서는 재현되지 않는다는 내용이 있었고 해당 내용을 확인하고 버전을 2022.3.13f1로 업데이트했을 때 재현되지 않고 있다.
Unity에서 오브젝트 풀링(Object Pooling)이란 오브젝트를 미리 만들어 쌓아둔 후 필요할 때 꺼내서 사용하고 다 사용했으면 다시 넣어두는 방식을 뜻한다. 이러한 오브젝트 풀링을 사용하는 이유는 Unity에서 오브젝트를 생성하여 메모리를 할당하고 리소스를 초기화하거나 오브젝트를 파괴하여 가비지(Garbage)가 생기고 이런 가비지가 모여 가비지 컬렉터가 동작함으로 인해서 성능 저하가 발생할 수 있고 이러한 문제를 최대한 배제하여 성능을 높이기 위해서다. 동작 방식을 간단하게 설명하면 최초 오브젝트를 담기 위한 오브젝트 풀을 생성하고 오브젝트 풀에 최소한으로 사용할 오브젝트를 생성하여 담아둔다. 그리고 필요할 때 꺼내어 사용하고 다 사용했을 때는 오브젝트 풀에 넣는다. 만약 오브젝트 풀이 비어있..
코루틴은 주로 프레임, 시간 단위로 반복적으로 수행해야 하는 함수 등이 있거나 HTTP 전송, 에셋 로드, 파일 I/O 완료 등을 기다리는 것과 같이 긴 비동기 작업을 처리해야 하는 경우 코루틴을 사용한다. 코루틴을 사용하게 되면 프로세스가 진행되는 중 코루틴이 프로세스를 중단시키고 Unity에서 일시적으로 제어를 가져와 사용하고 다시 Unity에 제어와 선택적 반환 값을 반환하여 중단된 부분에서 다시 시작하게 된다. 다만 코루틴은 다중 스레드를 사용하는 것과는 다르고 메인 스레드에서 실행된다. 실행 방법 아래는 코루틴 메서드의 기본 구조다. IEnumerator Coroutine() { (1) yield break; (2) } 반환 값은 IEnumerator이여야 하며 반환할 때는 yield 문을 사용..