2024. 1. 3. 00:42ㆍUnity, C# 프로그래밍
1. JetBrains DotPeek
유니티 + C# 으로 개발 시 프로파일러를 많이 사용하는데 프로파일러는 만능이 아니다.
GC.Alloc 이라고만 표시된다던지 (보통 boxing..), DisplayClass 등등 바로 알기 힘든 내용들이 나오는 경우가 많은데 이럴때 디컴파일러를 활용해서 IL 코드 및 Low-Level C# 으로 확인해보면 무엇이 문제인지 파악하기 쉬운 경우가 많다.
JetBrains DotPeek
https://www.jetbrains.com/decompiler/
위 링크에서 받을 수 있는데 그냥 까는 것 보다 JetBrains Toolbox를 깔고 거기서 설치하면 관리하기 편하다.
JetBrains ToolBox
https://www.jetbrains.com/ko-kr/lp/toolbox/
보통 왼쪽 파일 탐색기에서 파일을 골라 열면 *.cs 형식으로 열리는데
우클릭 후 IL Code 를 선택하면 오른쪽처럼 볼 수 있다.
- IL: IL 코드를 보여준다.
- Low-Level C#: IL 코드를 기반으로 저수준 C# 코드를 볼 수 있다. (가장 많이 사용)
- High-level C#: 남의 코드를 보는게 아니라면 잘 사용하지 않는다.
그리고 보통 해당 툴을 Unity와 같이 사용하는 경우가 많을텐데 유니티의 컴파일 결과를 보고 싶다면 아래 경로의 파일을 로드해서 보면 된다. (asmdef 사용 시 해당 이름의 dll 이 있다)
[프로젝트 경로]/Library/ScriptAssemblies/Assembly-CSharp.dll
2. Source.dotnet 및 Reference Source
https://referencesource.microsoft.com/
위 두 사이트는 C# 기본 라이브러리들의 내부 코드를 볼 수 있는 사이트다.
요즘 비주얼 스튜디오가 좋아져서 내부 구현을 디컴파일해서 보여주기도 하지만 해당 사이트들이 빠르고 보기 좋아서 많이 사용한다.
낮은 버전인 유니티는 상대적으로 reference source 사이트와 코드가 비슷하다.
추후에 좋은 툴이나 사이트 발견시에 또 업데이트 하겠습니다
'Unity, C# 프로그래밍' 카테고리의 다른 글
유니티 Color Hex 값 편리하게 사용하기 (2) | 2024.02.28 |
---|---|
유니티 에셋 번들 빌드 시간 단축 사례 (0) | 2024.02.01 |
C#의 람다 (익명 함수) 사용 시 주의할 점 (2) | 2024.01.03 |
XML 데이터 로딩 최적화 사례 (1) | 2023.12.28 |
유니티 ScriptedImporter 써보기 2부 (0) | 2023.07.14 |