728x90 반응형 Unity9 월드 공간과 UI 공간 게임 오브젝트들이 움직이는 월드 공간과 UI들이 위치한 UI 공간은 다르다. 월드 공간은 기획에 따라 크기가 다를 것이고 UI 공간의 경우 화면 해상도에 따라 다르다. 예를들어 월드 공간의 넓이가 800, 높이가 400이고 UI 공간의 넓이가 200, 높이가 400인 경우 월드 공간의 A 오브젝트가 좌표 (400, 200)에 있는걸 UI 공간의 표시하면 넓이가 벗어날 것이다. 따라서 이를 해결하기 위해선 정규화가 필요하다. 이를 해결하기 위해선 다음 두 가지 공식을 순서대로 진행한다. 1. 월드 공간 A의 좌표의 값에 각각 월드 공간의 넓이와 높이로 나눈다. => (400, 200) => (400 / 월드 공간 넓이, 200 / 월드 공간 높이) = (400 / 800, 200 / 400) = (0.5,.. 2023. 10. 17. Coroutine 이야기 C# 에서의 Coroutine - 특정 위치에서 실행을 일시 중단하고 다시 시작할 수 있는 진입점을 허용함 - 처리 도중 취소가 가능하다 - 하나의 Object로 Single Thread에서 더욱 효율적으로 사용하기 위해 만들어진 것 - 병렬 처리가 아닌 동시성 처리다 - Why use? 하나의 스레드에서 오랫동아 처리되는 작업 진행시 스레드가 대기상태가 되는데, 대기 상태에 진입한 스레드를 깨워서 다른 작업 수행할 수 있게 하여 효율성 극대화 하려고 - 가만 보면 병렬처리하는 것 과 매우 비슷해 보이나, 서로 다름을 인지하고 있자!! Unity에서의 Coroutine - 기본적으로 C#을 사용하기에 위 내용은 기본 - Unity에선 StartCoroutine을 통해 코루틴을 실행! 이건 엔진 내부에서 .. 2022. 11. 11. Coroutine - 가비지 줄이기 [GC가 도는 이유 및 최적화 아이디어 소개] Unity에서 StartCoroutine 호출 시 Unity 엔진 내부에서 인스턴스가 생성되면서 GC가 도는데, 사실 엔진 자체에서 제공하는 기능이기에 이를 완벽하게 GC호출이 안되겐 할 수 없으나, yield문 return시 new 구문에서 YieldInstruction이 생성되어 사용되면서 가비지가 생성되니 YieldInstruction을 미리 캐싱해두는 방식을 사용하여 최적화 하는게 중요합니다! [코드 및 설명] # 우선 이 코드는 Unity 공식 포럼에 나온것과, 다른 분들이 짜놓은 코드를 참고하여 저의 경우 WaitForSeconds를 자주 사용하여 이 기능 위주로만 사용하게 살짝 바꿨습니다. 아래 출처 표기했습니다. namespace Cashing.. 2022. 11. 11. 이전 1 2 다음 728x90 반응형