본문 바로가기

Unity

dotnet: BannedApiAnalyzer 도입기 도입 계기 작업자가 늘어나면서 코딩 스탠다드 및 네이밍 컨벤션 제어만으로는 사용하지 말아야 할 패턴에 대한 필터링이 어려워지고, 코드 리뷰 시간이 길어지기 시작했다. 일부 API들을 래핑해서 사용하기 시작하면서, 원형을 직접 사용하는 케이스를 Pull Request에서 사람이 직접 확인해야 했고, 이를 개선하기 위해 CI/CD에 분석기를 달아 최종적으로 PR이 머지되기 전 최소 1회 검증이 되도록 자동화했던 이력이 있다. 그런데, 이 케이스는 기대했던 것 보다 작업 과정에서 실수를 바로 알아채기가 힘들었고 코드 리뷰가 완료된 후 이 문제로 인해 코드를 수정해야하는 일이 생기곤 해서 검토했던 것 보다 생산성의 향상을 가져다 주지는 못했다. 솔루션 Console.Log, Reflection 기능 등을 사용했.. 더보기
Unity: 모바일 MMORPG 프로젝트 카야 Project Kaya 살펴보기 차례 서론 설치 프로젝트 구성 - 씬 (로비, 무브먼트) - 캐릭터 (정보, 본, 무기) - 셰이더 그래프 (PBR, PBR Skin, Hair) - 렌더피쳐 (캐릭터 가려지는 부분 그리기) - 플래너 리플렉션 (바닥 반사) - VFX 그래프 (이펙트 파티클) 좋았던 점 아쉬운 점 바라는 점 서론 2020년 유나이트 서울에서 발표된 세션에 등장했던 프로젝트 카야가 베일을 벗고 유니티코리아 GitHub 리포지토리에 공개되었습니다. 유니티 코리아 오피스 10주년을 기념하여 누구나 내려받아 실행시켜 볼 수 있게 오픈한 점이 고무적입니다. 메인 캐릭터로 사용된 '카야'는 협력사에 외주발주를 통해 실제 게임 프로덕션 과정에 가깝게 제작되었다고 알려져, 적당한 더미를 사용해 실무에 큰 효용성이 없던 다른 테크 데모.. 더보기
Unity: 스크립트로 사용중인 그래픽스 아키텍처 파악하기 타겟 기기 뿐만 아니라 에디터에서도 어떤 그래픽스 아키텍처를 사용하는지 알 수 있습니다. SystemInfo.graphicsDeviceType을 호출하면 Direct3D11, Vulkan, OpenGLES3, Metal 등 구분하여 작업할 수 있습니다. https://docs.unity3d.com/ScriptReference/Rendering.GraphicsDeviceType.html Unity - Scripting API: GraphicsDeviceType Success! Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each su.. 더보기
Unity: 비동기와 코루틴을 혼동하지 않기 본론에 앞서 유니티에서의 대부분 로직은 동기 방식으로 작성되며, 흐름(Flow, Stream)을 관리하거나 시간을 조절해 시행해야하는 작업은 코루틴(Coroutine)이라는 기능을 활용하여 구현됩니다. 특히 유니티는 기본적으로 메인스레드가 아닌 곳에서의 네이티브 API 호출을 허용하고 있지 않습니다. 비동기 방식으로 로직을 작성하더라도 유니티 API를 사용해야 하는 끝단에서는 메인스레드에서 함수 Call 작업을 마무리 해 주어야 합니다. 이 때 일반적으로 사용되는 방식이 액션을 큐에 추가해 유니티 Update 루프에서 처리해주는 디스패처입니다. 이 방법론이 필요한 이유와 한계, 장단점을 알고 계시다면 아래 내용은 스킵해도 됩니다. 왜 게임 개발에서는 비동기 사용이 적을까요? 상용 엔진에서는 async/a.. 더보기
Unity: ScnceManager.LoadSceneAsync 프레임 드랍 씬을 비동기로 로딩할 수 있는 API입니다. https://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.LoadSceneAsync.html Unity - Scripting API: SceneManagement.SceneManager.LoadSceneAsync You can provide the full Scene path, the path shown in the Build Settings window, or just the Scene name. If you only provide the Scene name, Unity loads the first Scene in the list that matches. If you have multiple.. 더보기
Unity: 로그 파일 기본 경로 빌드된 유니티 엔진의 로그 - C:/Users/사용자이름/AppData/LocalLow/회사명/프로덕트명/ 에디터 로그 - C:/Users/사용자/AppData/Local/Unity/Editor 기본 회사명 : DefaultCompany 더보기
Unity: InputSystem 액션 이름 변경시 유용한 팁 New Input System은 스크립터블 오브젝트를 통해 프로필 형태로 관리된다. 에디터를 열어보면 사용하기 편하게 정리되어 있다. 이 데이터를 바탕으로 자동으로 생성되는 스크립트로 제어와 동작 구현이 가능하다. 모노비헤이비어 클래스에서 인터페이스를 상속받고, 콜백을 설정해준 뒤 인터페이스를 구현해주면 InputSystem이 이벤트를 밀어넣어준다. 그런데, ActionMap이나 Action의 이름을 바꾸어야 할 때 에디터에서 변경 후 코드를 생성하면 스크립트에서는 변경사항이 적용되지 않는다. 모두 찾아 바꾸기 기능을 이용해 수정하는 대안도 있겠지만 네이밍 컨벤션이 비슷한 경우를 완벽하게 필터링 해 수정하기 어렵다. 이 작업 하자고 정규식을 만들어 돌리는 것 역시 시간 낭비일 수 있다. 자동생성된 클래스.. 더보기
Unity: 에디터 환경에서 활성화 된 윈도우 최대화 단축키 Shift + Space 키로 에디터 뷰의 전체로 확대가능합니다. 더보기