디시인사이드 갤러리

마이너 갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

[💬] [개발팁] 컴파일 정의로 유니티 컴파일 시간 줄이기

산적대왕갤로그로 이동합니다. 2019.12.22 22:07:27
조회 5659 추천 20 댓글 14
														

컴파일 타임이 길어지면 손놓고 멍때리게 되는데


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced85fa11d02831a10d3d354cfd31ab73f93ab07bc09d8ec362309d1336089196e59f852b4f528ac3e307b540d938daebe50f52014c86a701ee0b32


내 경우 컴파일 타임 그 잠시를 못 버텨서 디시를 뒤적거림.


그래서 이런 저런 방법을 시도해보았는데, 오늘은 그 중 하나인 '컴파일 정의' 를 논해보갔슴.


원리는 간단함. 유니티는 컴파일할때 Asset 파일을 싹 다 뒤져서 코드들을 찾고, 이걸 일일이 다 컴파일함. 당연히 느리겠지?


이걸 '어셈블리' 라는 덩어리로 묶어서 코드가 바뀐 부분만 컴파일 하자! 그럼 빨라지겠지?


라는게 '어셈블리 정의' 라는 것임.


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced85fa11d02831a10d3d354cfd31ab73f93ab07bc09d8ec362309d13360891d3b0ce8e4d4e5681604c36a3cd3f42e6a01d13d698d207

( Justice! assemble! 이런거 아님...)




viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced85fa11d02831a10d3d354cfd31ab73f93ab07bc09d8ec362309d1336089196e59fe8464d5180ba4cea57c089c611bae3327677e5b176378bab

https://docs.unity3d.com/kr/2017.4/Manual/ScriptCompilationAssemblyDefinitionFiles.html




viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced85fa11d02831a10d3d354cfd31ab73f93ab07bc09d8ec362309d1336089196e59f852b4f528ac3e307b540d938dab9b45551571fddf608619507

(뭔가 무안단물같은 사용후기.jpg)







적용 방법은 간단함.


1. 내 스크립트들이 들어있는 폴더에서 우클릭 > create 로 Assembly Definition



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced85fa11d02831a10d3d354cfd31ab73f93ab07bc09d8ec362309d1336089196e59f852b4f528ac3e307b540d938daebe55956504980a552b0c093


이렇게 하면 됨.




2. 어셋 쓰는것들을 어떤 폴더 (내 경우에는 Plugin 폴더를 만들어서 것다 쳐박음) 에 싹 모은 후


해당 폴더에서 역시 우클릭으로 PlugIn 이라는 (이름은 사실 아무래도 상관없음) 어셈블리 정의파일을 만들어 주면 됨.



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced85fa11d02831a10d3d354cfd31ab73f93ab07bc09d8ec362309d1336089196e59f852b4f528ac3e307b540d938daebb45951521adcf1082d25d7



3. 내 스크립트는 당연히 PlugIn 에 대해 의존성을 가지니까 (그거 없으면 내 스크립 안 돌아가잖아? 그걸 의존성이라 캄)


내 어셈블리 정의에서 의존성을 추가해주면 된다.


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced85fa11d02831a10d3d354cfd31ab73f93ab07bc09d8ec362309d1336089196e59f852b4f528ac3e307b540d938dae9e20c0f011fd0a0f57f6b94


그럼 다 되었느냐? 아님.


나도 저렇게만 하면 알아서 다 되는 줄 알았음 ㅅㅂ...




여기서 중요한게, 여기까지 한 후 VS 켜서 솔루션에 Assembly-Csharp가 있으면 안됨. (보통 있게 마련)


이게 뭐냐면, 어셈블리 정의 안 했을 때 유니티 솔루션 열면 Assembly-Csharp, Assembly-Csharp-editror, 어쩌고... 하면서 4개 생기잖아?


이게 "왜 생기냐면" (중요) 유니티가 어셋폴더를 싹 뒤져서 cs 파일이 있으면 '프로젝트 하나 만들야 쓰겄다' 하고 '유니티가 스스로 만든 프로젝트' 임.


이걸 만들려면, 당연히 폴더를 싹 뒤져야 하고, 모든 의존성 체크를 해야 함. 그래서 저놈들이 있는 한 컴파일 타임이 빨라지지 않는다.



어셈블리 정의를 만든 후에 Assembly-Csharp폴더가 보이면, 해당 프로젝트 클릭해서 무슨 파일이 들어있나 확인 해야 함.



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced85fa11d02831a10d3d354cfd31ab73f93ab07bc09d8ec362309d1336089196e59f852b4f528ac3e307b540d938dae2b90c565e4fd4f4508b346d



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced85fa11d02831a10d3d354cfd31ab73f93ab07bc09d8ec362309d1336089196e59f852b4f528ac3e307b540d938daedb3550e011cd0f316387197

인붕이들 이렇게 어셋 루트파일에 많이 만들거야.


이런 거 있으면 정서적으로도 좋지 않으니까


내 스크립트 파일로 보내거나 삭제하도록 하자.





viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced85fa11d02831a10d3d354cfd31ab73f93ab07bc09d8ec362309d1336089196e59f852b4f528ac3e307b540d938daebb00851034c86a4e8b44436


Assembly-Csharp이 없어졌으면 성공.


이렇게 '모든 스크립트들을 어셈블리 정의들로 덮으면' 드디어 어셈블리 정의가 주는 컴파일 속도 향상을 받을 수 있음.


(어렵다...)


-끗-




viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced85fa11d02831a10d3d354cfd31ab73f93ab07bc09d8ec362309d1336089196e59f852b4f528ac3e307b540d938dab8e30b07014cd7f45b0b0d00

(고작 몇 초 아낄려고 이런 어려운 걸 굳이 해야해요?)

(김씨 입 그만 놀리고 삽질이나 마저 혀)







마지막으로 또 한가지 알아둬야 할 게, 앞에서 어셈블리 정의들은 의존성을 가진다고 했잖아?


내 어셈블리(PDC) 가 플러그인에 의존성을 가지지?


이 경우 내 어셈블리의 코드만 수정할 경우 -> 내 어셈블리만 컴파일 함 -> 빠름!


플러그인의 코드를 혹시라도 수정할 경우 -> 플러그인 컴파일함 -> 내 어셈블리도 컴파일함 -> 느림...


즉 의존성을 주는 코드를 수정하면 그 의존성을 필요로 하는 어셈블리도 같이 컴파일 되서 별로 빨라지지 않는다는 걸 알아둬야 해.

(말이 존나 어렵네 ㅅㅂ.)


그리고 어셈블리 정의를 너무 많이 만들면 유니티가 좀 띨빵해서 의존성 체크하느라 1~2초 정도 잡아먹어...


어셋의 코드는 당연히 안 건드리니 어셋들을 묶어서 어셈블리 정의 한개로 퉁치는 것 만으로도 컴파일 타임은 크게 줄일 수 있을거야!


그러니 너무 많이 만들지 말고...




내 경우에는 이런 삽질을 해서 평균 14초 + 걸리던 컴파일을 8초대로 줄이는데 성공함.


그냥 UI 스크립 같은거 조금 고치는 건 5~6초만에 되기도 해서 집중하기 좋아졌네.


근데 왜 계속 디시질일까? ㅅㅂ






--------------------------------------------------------------------------------------------------------


더 자세히 알고싶은 인붕이들은 다음 링크들을 참조하자.



Assembly Definition increasing compile time a lot, not decreasing

https://forum.unity.com/threads/assembly-definition-increasing-compile-time-a-lot-not-decreasing.518285/



How I Cut Unity Compile Times by 75%

http://www.screaminggoose.com/blog/2019/2/4/how-i-cut-unity-compile-times-by-75



컴파일 타임을 유니티 에디터에 찍어줌

https://github.com/DarrenTsung/DTCompileTimeTracker

viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced85fa11d02831a10d3d354cfd31ab73f93ab07bc09d8ec362309d1336089196e59f852b4f528ac3e307b540d938daedb90954534f81a9ff2a9d2d



자동등록방지

추천 비추천

20

고정닉 6

2

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기
자동등록방지

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 말머리 제목 글쓴이 작성일 조회 추천
3004 설문 소속 연예인 논란에 잘 대응하지 못하는 것 같은 소속사는? 운영자 25/04/21 - -
3002 AD 작혼X페스나 헤븐즈필 콜라보 개시! 운영자 25/04/22 - -
174286 공지 인디 게임 개발 갤러리 규칙 - 질문 전 필독!! 파베르갤로그로 이동합니다. 24.12.04 3063 3
178773 공지 신문고 파베르갤로그로 이동합니다. 25.02.19 481 0
163344 공지 유료 강의 언급 차단에 관한 글 [12] 김메가갤로그로 이동합니다. 24.06.28 4003 19
52873 공지 게임제작 초심자를 위한 글 모음 [12] Goranic갤로그로 이동합니다. 20.07.02 82783 60
123789 공지 뉴비 개임개발 하려는데 뭐부터 해야하나요 복사본 [19] 흉황갤로그로 이동합니다. 23.04.11 24965 43
183567 🐣질문 게임 등록 Indie(175.115) 14:32 77 0
183566 📜일지 개발하고 있는 작업 올려봅니다. [2] 퀴레이스갤로그로 이동합니다. 14:28 181 1
183565 💬 리팩토링은 이제 당분간 안녕 [1] Micharie갤로그로 이동합니다. 14:15 95 0
183562 🐣질문 쯔꾸르 게임 캐릭터 이름 한글로 짓는거 가능한가요? [1] 라그네파갤로그로 이동합니다. 13:33 88 0
183561 💬 유니티6 다들 깃허브 어케쓰고있음? [3] Indie(121.164) 13:17 156 0
183560 💬 게임 개발만큼 돈 잘 벌면서 재밌는 일이 없는 것 같음 [9] Indie(39.7) 10:43 494 0
183558 📜일지 지난 이틀 동안 한 거 [12] tpf갤로그로 이동합니다. 10:28 392 4
183557 💬 동물로변신해서 치고박고 싸우는게임인데 이름 아시나요? [5] ㅇㅇ갤로그로 이동합니다. 09:17 262 0
183556 💬 ㄹㅇ뉴비가 멀티게임 만들면서 느낀점 [4] ㅇㅇ(218.50) 08:02 332 0
183555 💬 2d로 다크소울 세키로 구현한 도트게임 있음? [6] 개사료애호가갤로그로 이동합니다. 06:38 231 0
183553 💬 디폴트 바닥 타일 좀 바꿔봤는데 어떤 거 같음? [5] Ray.갤로그로 이동합니다. 03:54 261 0
183552 🐣질문 유니티 초보인데 도움좀여 ㅠㅠ [4] Indie(59.14) 03:38 191 0
183551 📜일지 멀티게임을 만들면서 느끼는점 [4] 어떻게든되겠지갤로그로 이동합니다. 03:27 394 4
183550 🐣질문 혹시 인디갤에서 언리얼로 개발부터 출시까지 완수한 사례가 있나요? [5] Indie(222.233) 03:23 314 0
183548 💬 컨스트럭트3 도와주세염 Indie(61.40) 02:14 104 0
183547 💬 공모전 발표 처음으로 해볼 예정... [9] ㅇㅇ갤로그로 이동합니다. 01:05 340 0
183546 🐣질문 챗지피티 유료 여러므로 쓸만함 ?? [2] Indie(121.172) 00:26 258 0
183545 🐣질문 유니티 NewInputSystem에서 UI 터치 막는 방법좀요 [2] Indie(175.112) 04.26 163 0
183544 💬 근데 케바케겠지만 [6] Indie(1.233) 04.26 270 0
183543 🐣질문 대학동아리 아트로 들어가는데 질문있어 [16] Indie(211.212) 04.26 556 1
183542 💬 깃허브 퍼블릭 레포 라이센스 명시된 것 없으면 ㅇㅇ(119.75) 04.26 153 0
183541 🐣질문 날씨 api는 어떤 거 써야됨? [2] ㅇㅇ(118.235) 04.26 193 0
183540 💬 잠 제대로 안자면 치매 걸리는거 증명된 사실임 ㅇㅇ갤로그로 이동합니다. 04.26 232 0
183539 🐣질문 커리큘럼 따라갈만한 강좌나 책 있을까요? [4] Indie(112.155) 04.26 152 0
183538 💬 대학 창업보육센터 입주하면 콘진원 지원사업 지원 못함? [3] Indie(121.167) 04.26 192 0
183536 💬 ADHD특) 갑자기 개쩌는 아이디어 불쑥 떠오름 [2] ㅇㅇ(14.43) 04.26 308 0
183535 💬 소스코드 유출 막는 법 있어? [9] Indie(182.209) 04.26 455 0
183534 💬 요즘에 자기가 뭘 좋아하는지도 모르는 사람이 많다네 [2] ㅇㅇ(121.165) 04.26 306 0
183533 💬 개발 해둔 있어서 좋네 Indie(27.113) 04.26 138 0
183532 💬 지피티는 ㄹㅇ 사용자 능지에 따라 성능 갈리는듯 [6] ㅇㅇ갤로그로 이동합니다. 04.26 313 0
183531 💬 밑에 ai 펀딩 이야기 나오길래 찾아봤는데 [5] Indie(121.172) 04.26 309 0
183530 💬 게임 개발 찍먹 해보는 중 [2] 캐빈99갤로그로 이동합니다. 04.26 195 0
183529 💬 유니티 Complete Domain 존나 길어질때 있는데 [4] Indie(27.113) 04.26 118 0
183528 💬 내가 생각한 인디게임 [10] ㅇㅇ갤로그로 이동합니다. 04.26 504 1
183527 🐣질문 애드몹 기능 잘 아는 사람 [3] ㅇㅇ갤로그로 이동합니다. 04.26 152 0
183526 🤝구인 좀보이드 라이크 MMORPG (좀비게임 아님) 같이 개발해보실분 구합니다 [15] 퀴레이스갤로그로 이동합니다. 04.26 569 1
183525 💬 플엑 굿즈 수량은 보통 얼마나 준비해? [3] Indie(61.40) 04.26 169 1
183524 🐣질문 생성형 AI 기술 발전이나 활용 게임에 대해 어떻게 생각해? [11] Indie(118.129) 04.26 354 0
183523 💬 이번 33 원정대 노래 다 사람이 불렀어? [1] ㅇㅇ(180.233) 04.26 234 0
183522 📢홍보 공식 한국 유튜브 채널 만들었습니다. [10] Indie(115.139) 04.26 419 2
183521 💬 유튜브 공식 채널 만들었습니다. [2] Indie(115.139) 04.26 234 0
183520 🐣질문 게임 퍼블리싱 제안서 질문! Indie(1.250) 04.26 211 0
183518 💬 역시 1인개발 해야겠다 [13] Indie(218.145) 04.26 825 3
183517 💬 비주얼 스튜디오 사용하려는 ㅈ밥인데 [4] Indie(110.12) 04.26 255 0
183516 💬 렘수면 개발법 [6] 28갤로그로 이동합니다. 04.26 357 0
뉴스 고현정, 아기 안은 사진 공개하며…이런 말 전했다 디시트렌드 14:00
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2