내가 일하며 알게 된 프로그래밍
article thumbnail
Unity - On-demand Rendering
프로그래밍/Unity3D 2024. 5. 13. 16:13

게임 설정의 최적화 및 옵션 관련 부분을 개발하다보면,흔히 말하는 풀옵, 상옵, 하옵 등 성능 관련을 작업하는 날이 올 것이다.오늘은 렌더링의 주기를 관리하는 "온디맨드 렌더링" 에 대해 알아보자. 렌더링 주기를 관리하는 방법이라면Application.targetFrameRate 혹은QualitySettings.vSyncCount 해당 프로퍼티를 수정해서 렌더링 주기를 관리할 수 있었다. 하지만 이러한 접근 방식은 렌더링 뿐만 아니라 Unity가 실행하는 모든 함수 주기에도 영향을 주기 때문에OnDemandRendering 을 통해 플레이어 루프 주기와 렌더링 주기를 분리할 수 있다. 쉽게 말해 매 주기마다 체크하는 터치이벤트는 그대로 60프레임을 기준으로 체크를 하면서렌더링은 이보다 낮은 프레임으로 표..

article thumbnail
Unity - SendMessage
프로그래밍/Unity3D 2023. 11. 3. 09:46

유니티 개발을 하다보면 다른 스크립트의 함수 호출을 필요로 할 때가 있다. 유니티 Doc를 확인하면 SendMessage를 통해서 다른 함수를 호출 할 수 있다. 라고 말해주지만 Unity - Scripting API: GameObject.SendMessage Success! Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable. Close docs.unity3d.com 일단 결론을 말하자면 SendMess..

article thumbnail
Unity - 가비지 컬렉터 (Garbage Collector)
프로그래밍/Unity3D 2023. 10. 24. 21:25

가비지 컬렉터란? 메모리 관리 기법 중의 하나로, 동적으로 할당한 메모리 영역 중 더 이상 쓰이지 않는 영역을 찾아내어 해제하는 기능. (이하 GC) C 혹은 C++ 에서 할당과 해제를 직접하는 언어들도 있지만 항상 사람은 실수를 하기 마련이기에, 해제를 하지않거나 혹은 해제된 메모리를 사용하면서 문제가 발생하기에 프로그래밍 언어가 직접 메모리 해제를 관리하는 기능이다. 유니티는 C#의 GC와 기본적으로 비슷하지만 몇가지 차이가 있다. 유니티 GC Doc 가비지 컬렉터 개요 - Unity 매뉴얼 Unity에서는 가비지 컬렉터를 사용하여 애플리케이션과 Unity에서 더 이상 사용하지 않는 오브젝트로부터 메모리를 회수합니다. 스크립트가 관리되는 힙에 할당하려고 하지만 할당을 수용할 수 docs.unity3d..

article thumbnail
도트를 더욱 이쁘게? XBR Shader 소개합니다
프로그래밍/ETC 2023. 9. 18. 22:43

XBR는 텍스처 스케일링 및 업샘플링 기술에 대한 쉐이더지만 주로 픽셀아트형 게임의 그래픽을 개선하는데 주로 사용된다. XBR 쉐이더의 기본 이해는 각 픽셀의 주변 픽셀 값을 분석하여 보간을 하는 작업이 이루어지는 쉐이더입니다. 던파모바일에서 보여주듯 주변 픽셀의 계산을 얼마나 할지에 대한 차이에따라 선명도차이가 극명하게 나타난다 https://docs.libretro.com/shader/xbr/ xbr - Libretro Docs xbr Background Preview Image External Links Last update: 2023-09-03 docs.libretro.com Libretro 라는 개발자가 설명하는 XBR 쉐이더의 적용법에 따르면 같은 이미지지만 다른 느낌으로 표현할 수 있는 모습..

article thumbnail
Unity UI 최적화 (UGUI Optimization)
프로그래밍/Unity3D 2022. 8. 24. 02:56

2021년 7월 최신화를 기준으로 작성했습니다. 유니티 공식에서 언급한 UI 관련 최적화 팁입니다. 1. Canvas 내의 UI가 많아지면 분할하자 요소가 변경될 때마다 Canvas를 최적으로 렌더링 하기 위해서 다시 한번 계산에 들어간다 따라서 요소가 많아지면 Canvas를 분할하여 관리하라 2. Raycast Target 를 사용하지 않아도 된다면 비활성화 시키자 Graphic Raycaster가 상호작용이 가능하며 Raycast Target이 활성화 되어있는 UI들을 매프레임마다 이벤트가 발생하는지 매번 검사한다 따라서 사용하지 않아도 된다면 해당 옵션은 꺼두자 *상호작용이 가능한지는 Graphic Raycaster가 판단하기 때문에 Graphic Raycaster 또한 필요하지 않다면 삭제하는게 ..

article thumbnail
Rider를 소개합니다
프로그래밍/Unity3D 2022. 8. 21. 01:58

Jetbrain에서 개발한 Rider를 소개합니다. 기존 Unity를 사용하며 개발했던 IDE는 Visual Studio 2015~2019 를 사용했지만 최근 Rider를 알고 난 후 회사에서는 못쓰지만.. 개인 프로젝트를 진행 할 땐 Rider로 개발하는 중이다. Rider의 장점과 단점 장점 최적화 코드 힌트 변경 전 변경 후 다양한 툴 제공 Color 클래스에서 Color Picker 툴 제공 (솔직히 이건 신세계였음..) Unity 함수 설명 및 Doc 연결 성능 강조 표시 쉐이더 코드 지원 Git을 연결하여 브랜치를 이동 및 비교 Unity 파일 내 사용 위치 검색 등등.. 이미 JetBrain의 IntelliJ IDEA 에서도 지원하는 기능이 Rider에서도 지원되는게 많지만 분명 Unity에..

article thumbnail
Unity Cache Server (유니티 캐시서버)
프로그래밍/Unity3D 2021. 12. 24. 00:26

유니티 캐시서버에 대해 알아보자. 협업을 하면서 git, svn, cvs 등 형상관리 툴을 사용하다 보면 버전별 branch가 다양하게 나뉘는건 당연한 일이다. 이때 branch를 옮겨다니다 보면 Unity 에서는 바뀐 에셋 파일을 감지하고 해당 에셋들에 대해 다시 import를 진행한다. (.psd, .fbx, (psd,fbx).meta, texture들의 내부 버전번호, AssetPostprocessors 버전의 해시가 변경되면 import를 다시 진행한다) 이렇게 에셋들에 대한 임포트를 다시 실행할때마다 대기시간이 걸린다 프로젝트의 크기에 따라 짧게는 몇초 길게는 몇시간까지도 소요된다. 이걸 해결하기 위한 기능이 Cache Server의 기능이다. Local서버 혹은 Remote서버에 임포트된 파일..

article thumbnail
유니티 로그 콜백 (LogCallback)
프로그래밍/Unity3D 2020. 6. 3. 00:35

지난 포스팅에서 Debug.Log에 이어서 로그 콜백을 한 번 더 써보려고한다. Unity에서는 로그를 전송한 후에 콜백이 이루어진다. 공식문서를 살펴보자. public delegate void LogCallback(string condition, string stackTrace, LogType type); Description Use this delegate type with Application.logMessageReceived or Application.logMessageReceivedThreaded to monitor what gets logged. See Also: Application.logMessageReceived, Application.logMessageReceivedThreaded, L..