목록전체 글 (25)
흔한 덕후의 잡동사니
오브젝트 풀(Object Pool)이란, 프로그램 실행 중 실시간 동적 할당이 성능 저하의 주요 원인이 되므로, 미리 일정량의 객체를 생성해 두고 필요할 때 재사용하는 기법이다. 이를 통해 동적 할당에 소요되는 시간을 줄이고, 프로세스의 속도 저하를 완화할 수 있다. 다음과 같은 형식으로 정의 되었다. publicObjectPool(FunccreateFunc, ActionactionOnGet, ActionactionOnRelease, ActionactionOnDestroy, boolcollectionCheck, intdefaultCapacity, intmaxSize); Unity의 오브젝트 풀링Unity에서는 UnityEngine.Pool 네임스페이스를 통해 오브젝트 풀 기능을 제공하며, 이는 제네릭(G..
git을 사용할 때 여러 사람이 동시에 같은 scene.unity를 수정하면 병합시 문제가 생긴다. 이를 방지하기 위해 다음과 같은 방법을 사용할 수 있다.동적 씬 생성:씬을 미리 만들지 않고 동적으로 생성하는 코드를 작성하여, 병합 충돌 문제를 방지하고 협업을 원활하게 진행할 수 있다.각자 작성한 코드를 적용하여 하나의 씬을 만드는 방식으로, 하나의 리소스는 한 명의 인원이 담당하는 것이 원칙을 지키면서도 병합하는데 문제가 없는 방식이다.로딩 씬 활용:동적 씬을 생성할 때 활용되는 방식이다.인트로 진입 시, 인게임에서 사용할 리소스를 미리 로딩하는 씬을 만들어 로딩 시간을 단축한다.씬의 리소스가 많아질수록 로딩 시간이 증가하므로, 인게임 오브젝트가 로드될 때까지 임시로 보여주는 '로딩 씬'을 사용한다..
카드 뒤집기 관련 이펙트를 구현하기 위해 Transform을 사용하여 회전 및 크기 조정을 시도했다. 이때, 변경에 필요한 시간을 Time.deltaTime을 사용해 일정 시간 동안 부드럽게 변경되도록 구현했다. 그러나 코드 상으로는 시간 내에 회전이 완료되어야 했지만, 회전이 중간에 멈추는 현상이 발생했다. 문제 원인이 문제는 Unity에서 제공하는 Time.deltaTime이 항상 일정하지 않기 때문에 발생했다. Time.deltaTime은 프레임 간의 시간 차이를 반환하므로, 프레임률(FPS)이 불안정한 경우 회전 속도가 일정하지 않을 수 있다. 특히 저사양 기기나 복잡한 씬에서는 프레임률이 떨어져 이 문제가 더 두드러질 수 있다. 해결 방법: Coroutine 도입이 문제를 해결하기 위해 Coro..
스레드를 사용하는 이유는 보통 4가지이다.1. 병렬성의 극대화2. 사용자에 대한 향상된 응답성3. 멀티코어 CPU의 사용률 증가4. 단순화된 설계 ' 병렬성의 극대화 '는 공유자원을 사용하지 않는 일감을 여러 스레드가 동시에 실행할 시 최종적으로 걸리는 시간이 줄어드는 것을 의미한다. ' 사용자에 대한 향상된 응답성 '의 경우 사용자가 보는 반응성을 의미하는데, 예를들어 게임 시작 버튼을 눌렀을때 관련 메모리 할당 및 가동작업이 실행되고, 이후 사용자에게 인게임 씬을 보여준다면, 그동안 사용자 입장에선 게임이 멈춘 것 처럼 보이며 답답함을 유발할 것이다. 이를 따로 스레드를 만들어두어 게임 시작버튼을 누르면 해당 스레드가 관련 UI를 보여주는 동안 기존 스레드가 작업을 진행하고, 완료된 이후 인게임으로 ..
.NET Framework 4부터 다중 스레딩을 사용하는 권장 방법은 TPL(작업 병렬 라이브러리) 및 PLINQ(병렬 LINQ)를 사용하는 것이다. TPL 및 PLINQ는 ThreadPool 스레드를 사용하는데, ThreadPool은 C++의 IOCP 방식으로 관리된다. 스레드 풀의 최대 스레드 갯수는 Task 등 내부적으로 비동기 방식을 사용하는 모든 기능에 영향을 미치므로 하드웨어에 비해 성능이 나오지 않는다면 스레드 갯수를 바꿔가며 테스트해보자. 물론 개별적으로 스레드를 만들어 등록할 수 도 있지만 C#에서는 스레드풀과 관련된 여러 API들이 많아 코드의 이해도 상향과 프로젝트의 관리를 위해 System.Threading에서 제공하는 API를 사용하는 것이 좋다. C#의 스레드는 한가지 특이한 점..
1. 풍선 애니메이션 구성 및 스크립트를 통한 움직이기 작성2. 시간 UI 구현3. 마우스의 좌표를 메인 카메라의 월드좌표로 변환해 인게임에서 사용4. 다시하기 버튼 구현5. PlayerPrefs을 이용한 최고 점수 기록 및 불러오기6. OnBecameInvisible 함수를 사용하여 객체가 시야에서 벗어나면 알아서 삭제

Unity를 이용해 만든 프로젝트서비스 명: 우마무스메 프리티 더비 장르: 육성 시뮬레이션, 스포츠 분류: 모바일 제작사: Cygames 서비스 명: 뱅드림! 걸즈 밴드 파티! 장르: 리듬, 시뮬레이션 분류: 모바일 제작사: Craft Egg, Bushiroad 서비스 명: 벽람항로 장르: 전략, 시뮬레이션 분류: 모바일 제작사: Manjuu, Xiamen Yongshi 서비스 명: 붕괴 3rd 장르: 액션 RPG 분류: 모바일 제작사: miHoYo 서비스 명: 소녀전선 장르: 전략, 시뮬레이션 분류: 모바일 제작사: Sunborn Network Technology 서비스 명: 원신 장르: 액션 RPG 분류: PC, 콘솔, 모바일 제작사: miHoYo 서비스 명: 하스스톤 장르: 카드 게임 분류: PC,..