안녕하세요Dictionary를 Linq로 호출하는 성능 테스트 중에 이상한 점을 발견하여 블로그로 적게 되었습니다.유니티 버전: 2022.3.44f1 foreach (var keypair in dictionary){ if (keypair.Value.GroupID == groupID) { // ... // }}데이터를 찾기 편하게 Dictionary를 사용하는 경우가 많은데, 개발하다 보면 Key가 아닌 값으로 찾아야 하는 경우가 종종 있습니다.이럴 때 위 코드처럼 foreach를 이용해서 찾게 됩니다. https://learn.microsoft.com/ko-kr/dotnet/api/system.collections.generic.dictionary-2.values?view..
안녕하세요.진행하는 프로젝트에서 UniTask를 사용했는데, UniTask를 어느 상황에서 좋았는지 공유해 볼까 합니다.https://github.com/Cysharp/UniTask GitHub - Cysharp/UniTask: Provides an efficient allocation free async/await integration for Unity.Provides an efficient allocation free async/await integration for Unity. - Cysharp/UniTaskgithub.com 좋았던 경우 주로 네트워크 혹은 패치 다운로드와 관련된 싱글턴 객체, 데이터 혹은 리소스를 관리해주는 싱글턴에서 매우 유용하게 사용했습니다. C#의 Task를 통해 다른 스..
개요 안녕하세요. 작업하는 프로젝트 빌드가 너무 오래 걸려 짬날 때마다 확인하다 Unity에서 Spine Runtime Package에서 원인을 찾아 포스팅으로 남겨봅니다. Unity: 2022.1.15f1 Spine Package: spine-unity 4.0 2022-09-26 (Last updated: UTC - 2022 Sep 26) 발생 문제 빌드를 시작하면 `Begin` 이나 `BuildPreProcess` 단계에서 장시간 머물러있는 상황이었습니다. Unloading 5 Unused Serialized files (Serialized files now loaded: 0) Unloading 1364 unused Assets / (33.2 MB). Loaded Objects now: 5279. M..
안녕하세요. 기존에 ECS 3D기반으로 개발된 프로젝트를 2D 도트느낌의 게임으로 변환하면서 NSprites라는 라이브러리를 사용했는데 관련해서 주의해야 할 점들 정리해밨습니다. 1. NSprites https://github.com/Antoshidza/NSprites GitHub - Antoshidza/NSprites: Unity DOTS Sprite Rendering Package Unity DOTS Sprite Rendering Package. Contribute to Antoshidza/NSprites development by creating an account on GitHub. github.com 이 Framework는 ECS와 호환되는 Sprite Rendering 시스템 입니다. GP..
안녕하세요. 이번에는 RectTransform의 사이즈를 적정 사이즈로 만드는 방법을 적어볼까 합니다. 제목에는 어떻게 적어야할지 몰라서 "적정 사이즈"라고 적었는데, 최소 사이즈(MinSize)나 추천 사이즈(PreferredSize) 정도로 생각해주시면 될 것 같습니다. 방법 1. ContentSizeFitter 컴포넌트 가장 쉽고 편한 방법입니다. Text, Image, RawImage 컴포넌트와 같이 Graphic을 상속받는 컴포넌트들이나, LayoutGroup 컴포넌트들 및 LayoutGroupElement 컴포넌트에 따라 크기가 설정됩니다. 정확히는 ILayoutElement 인터페이스를 상속받는 UI 컴포넌트들은 다 적용된다고 보시면 됩니다. 좀 더 디테일한 정보는 매뉴얼을 살펴보시면 됩니다..
안녕하세요. 한동안 UGUI를 쓰면서 LayoutGroup을 강제 갱신이 필요해서 찾아본 내용과 삽질한 것들을 적어볼까 합니다. HorizontalLayoutGroup https://docs.unity3d.com/Packages/com.unity.ugui@1.0/manual/script-HorizontalLayoutGroup.html VerticalLayoutGroup https://docs.unity3d.com/Packages/com.unity.ugui@1.0/manual/script-VerticalLayoutGroup.html GridLayoutGroup https://docs.unity3d.com/Packages/com.unity.ugui@1.0/manual/script-GridLayoutGroup..
이번에는 유니티에서 제공하는 UnityWebRequest와 Coroutine 말고 다른 스레드를 만들어서 다운로드하도록 해보겠습니다. 1. 다른 스레드를 사용하는 이유 1.1 프레임 드랍 최소화 위 스크린샷은 다른 게임에 패치 화면인데 미니게임을 진행합니다. 최근 출시되는 게임들에는 이처럼 패치 용량이 너무 많아 패치 화면에서 튜토리얼을 진행하거나 미니게임을 진행하거나 단순히 동영상을 재생시키거나 하는 게임들이 많이 늘어나고 있고 있어 패치 화면에서의 프레임드랍도 체크해야 하는 상황이 생깁니다. UnityWebRequest로 다운로드하는 동안 성능을 많이 먹거나 하지 않지만 다운로드 이후에 패치 리스트 갱신, 압축파일인 경우 압축해제, 파일 검증 등등 다른 작업들로 인해 프레임드랍이 자주 발생하게 됩니다..
이번에는 UI를 위한 정보를 가져오고 UI에 출력해보겠습니다. 원래는 이번 편이 분량이 적어서 저번 편에 같이 써볼까 했는데, 그러기엔 조금 길다 싶어서 따로 쓰게 되었습니다. 1. 패치 UI 그냥 앱스토어 들어가서 가장 상단에 있는 게임을 받아서 확인해보았습니다. (광고 아닙니다!) 패치를 받는 게임들 UI들은 대부분 이런 형식인데, 다운로드 전에는 "받아야 할 파일 크기", 다운로드 중에는 "진행도"를 보여주는 것이 일반적입니다. 제가 간단하게 UI를 구성해보았습니다. 실제 게임을 보고 제 프로젝트를 보니 초라하네요... 다운로드 전 받아야 할 파일 개수 받아야 할 파일 크기 다운로드 중 다운로드 중인 파일 진행도 전체 진행도 다운로드된 파일 개수 / 전체 파일 개수 제가 그냥 머릿속에서 "보통 이 ..