Unity 검색

프로그래머를 위한 워크플로 속도 향상 팁

2021년 9월 27일 엔진 & 플랫폼 | 10 분 소요
Two monitors and a laptop
Two monitors and a laptop
공유

Is this article helpful for you?

Thank you for your feedback!

최근 유니티에서 전문 개발자를 위한 전자책 Unity 2020 LTS로 생산성을 높이는 70여 가지 팁을 바탕으로 두 개의 블로그 포스팅, 에디터에서 워크플로 속도를 높이는 다섯 가지 방법아티스트를 위한 워크플로 속도 향상 팁을 게재했습니다. 이번 시리즈의 세 번째이자 마지막 블로그 포스팅에서는 단기간에 많은 작업을 수행하는 데 도움이 되는 프로그래머를 위한 워크플로와 기능을 중점적으로 다룹니다. 먼저 플레이 테스트 시 컴파일 시간을 단축할 수 있는 방법에 대해 살펴보겠습니다.

Enter Play Mode 설정으로 컴파일 시간 단축

플레이 모드에 진입하면 빌드와 동일하게 프로젝트가 실행됩니다. 플레이 모드일 때 에디터 내에서 변경한 사항은 플레이 모드를 종료하면 초기화됩니다.

에디터 내에서 플레이 모드로 진입할 때마다 Unity에서 두 가지 중요한 작업을 수행합니다.

  • 도메인 리로드: 스크립팅 상태 백업, 언로드 및 재작성
  • 씬 리로드: 씬을 없애고 다시 로드

스크립트와 씬이 복잡할수록 이 두 가지 작업에 더 많은 시간이 소요됩니다.

더 이상 스크립트를 변경할 계획이 없는 경우 Enter Play Mode Settings(Edit > Project Settings > Editor)를 활용하여 컴파일 시간을 단축하세요. Unity는 도메인 리로드와 씬 리로드 중 하나 또는 두 가지 모두를 비활성화하는 옵션을 제공합니다. 이를 통해 플레이 모드 진입 및 종료 속도를 높일 수 있습니다.

다만, 스크립트를 추가로 변경할 계획이라면 도메인 리로드를 재활성화해야 합니다. 마찬가지로 씬 계층 구조를 수정하는 경우에는 씬 리로드를 재활성화해야 합니다. 그렇지 않으면 예기치 않은 동작이 발생할 수 있습니다.

The effects of disabling the Reload Domain and Reload Scene settings

어셈블리 관리를 사용한 컴파일 제어

어셈블리는 C# 코드 라이브러리로, 여기에 포함된 리소스와 유형은 함께 사용 가능하며 기능의 논리적 단위를 형성합니다. 기본적으로 Unity는 대부분의 게임 스크립트를 미리 정의된 어셈블리인 Assembly-CSharp.dll로 컴파일합니다. 이는 소규모 프로젝트에서 잘 작동하지만 다음과 같은 단점이 있습니다.

  • 하나의 스크립트를 변경할 때마다 Unity에서 다른 스크립트까지 모두 재컴파일합니다.
  • 스크립트가 다른 스크립트에 정의된 유형에 액세스할 수 있습니다.
  • 모든 스크립트가 모든 플랫폼용으로 컴파일됩니다.

스크립트를 커스텀 어셈블리로 구성하면 모듈성과 재사용성이 향상됩니다. 또한 스크립트가 기본 어셈블리에 자동으로 추가되지 않으며, 액세스 가능한 스크립트도 제한됩니다.

위의 다이어그램과 같이 코드를 여러 어셈블리로 나눌 수 있습니다. 여기에서 Main의 코드를 변경하더라도 Stuff의 코드는 영향을 받지 않습니다. 마찬가지로 Library가 다른 어셈블리에 종속되지 않으므로 Library의 코드를 다른 프로젝트에서 쉽게 재사용할 수 있습니다.

Assemblies in .NET은 C#으로 작성한 어셈블리에 대한 종합 정보를 담고 있습니다. Unity에서 나만의 어셈블리를 정의하는 방법에 대한 자세한 내용은 Unity 기술 자료의 Assembly definitions를 참조하세요.

스크립트 템플릿을 사용하여 새 스크립트 커스터마이즈

새 스크립트를 작성할 때 매번 동일한 변경 사항을 적용하시나요? 무의식적으로 네임스페이스를 추가하거나 업데이트 이벤트 함수를 삭제하시나요? 원하는 시작점에 스크립트 템플릿을 설정하면 코드를 추가 또는 제거하지 않고도 팀 전체의 일관성을 유지할 수 있습니다.

새 스크립트나 셰이더가 생성될 때마다 Unity는 다음에 저장된 템플릿을 사용합니다.

%EDITOR_PATH%\Data\Resources\ScriptTemplates:

  • Windows: C:\Program Files\Unity\Editor\Data\Resources\ScriptTemplates
  • Mac: /Applications/Hub/Editor/[version]/Unity/Unity.app/Contents/Resources/ScriptTemplates

기본 MonoBehaviour 템플릿은 다음과 같습니다.

81-C# Script-NewBehaviourScript.cs.txt

셰이더나 기타 동작 스크립트, 어셈블리 정의를 위한 템플릿도 있습니다.

프로젝트마다 스크립트 템플릿을 정하려면 Assets/ScriptTemplates 폴더를 만든 다음, 해당 폴더에 스크립트 템플릿을 복사하여 기본 템플릿을 오버라이드하세요.

모든 프로젝트를 대상으로 하는 기본 스크립트 템플릿도 직접 수정이 가능하지만, 수정 전에 원본을 백업해야 합니다.

81-C# Script-NewBehaviourScript.cs.txt의 원본 파일은 다음과 같습니다.

다음 두 가지 키워드를 기억해 두는 것이 좋습니다.

  • #SCRIPTNAME#은 입력한 파일 이름 또는 기본 파일 이름(예: NewBehaviourScript)을 나타냅니다.
  • #NOTRIM#은 괄호 안에 공백 줄이 포함되도록 합니다.

Unity 에디터를 다시 시작하면 커스텀 MonoBehaviour를 생성할 때마다 변경 사항이 적용되어 나타납니다.

비슷한 방식으로 다른 템플릿도 수정할 수 있습니다. 원본의 사본과 수정본은 Unity 프로젝트 파일 외부에 안전하게 보관해주세요.

속성을 사용하여 인스펙터 커스터마이즈

Unity에는 클래스나 프로퍼티, 함수 위에 배치하여 특수한 동작을 나타낼 수 있는 다양한 속성이 있습니다. C#에서는 속성 이름을 대괄호로 묶습니다. 

다음은 스크립트에 추가할 수 있는 몇 가지 일반적인 속성입니다.

위의 예시는 사용 가능한 수많은 속성 중 일부입니다. 변수의 값을 유지하면서 이름만 변경하고 싶으신가요? 또는 빈 게임 오브젝트를 만들지 않고 논리를 호출하고 싶으신가요? 스크립팅 API에서 전체 속성 목록을 참조하여 어떤 기능이 있는지 살펴보세요.

고유의 PropertyAttribute를 만들어 스크립트 변수에 커스텀 속성을 정의할 수도 있습니다.

커스텀 창 및 인스펙터

확장 가능한 에디터는 Unity의 강점 중 하나입니다. UI Toolkit 패키지나 IMGUI 모드를 사용하여 커스텀 창과 인스펙터와 같은 에디터 UI를 만들 수 있습니다.

UI Toolkit의 워크플로는 표준 웹 개발과 유사합니다. HTML과 XML에서 영감을 받은 마크업 언어인 UXML을 사용하여 사용자 인터페이스와 재사용 가능한 UI 템플릿을 정의하세요. 그런 다음, USS(Unity Style Sheets)를 적용하여 UI의 시각적 스타일과 동작을 수정하세요.

또는 위에서 언급한 대로 즉시 모드인 IMGUI를 사용해도 됩니다. 먼저 에디터 기본 클래스에서 가져온 다음, CustomEditor 속성을 사용하세요.

커스텀 인스펙터를 만들기 위해서는 둘 중 어떤 방법을 사용해도 됩니다.

커스텀 에디터는 MyPlayer 스크립트가 인스펙터에 표시되는 방식을 수정합니다.

사용자 인터페이스(UI) 만들기를 참조하여 UI Toolkit이나 IMGUI로 커스텀 에디터 스크립트를 구현하는 방법에 대해 자세히 알아보세요. UI Toolkit에 대한 간단한 소개는 에디터 스크립팅 시작하기 튜토리얼을 참조하세요.

어드레서블로 에셋 관리 간소화

어드레서블 에셋 시스템으로 게임을 구성하는 에셋을 간편하게 관리할 수 있습니다. 씬, 프리팹, 텍스트 에셋 등을 포함한 모든 에셋을 '어드레서블'로 표시하고 고유한 이름을 지정할 수 있습니다. 여기에 지정된 별칭은 어디서든 호출할 수 있습니다.

게임과 게임의 에셋 사이에 추상화 계층을 추가하면, 다운로드 가능한 별도의 콘텐츠 팩 제작과 같은 특정 작업을 간소화할 수 있습니다. 또한 이 시스템을 사용하면 에셋 팩이 로컬 또는 원격 등 어디에 있더라도 참조할 수 있습니다.

이 예시에서는 어드레서블이 프리팹 인벤토리를 추적합니다.

우선 패키지 관리자에서 어드레서블 패키지를 설치하고, 프로젝트에 몇 가지 기본 설정을 추가하세요. 프로젝트의 각 에셋이나 프리팹에 '어드레서블' 옵션이 있어야 합니다. 인스펙터에서 에셋 이름 아래에 있는 옵션을 선택하여 기본 고유 주소를 할당합니다.

기본 Addressable Name으로 활성화된 어드레서블 옵션

옵션을 선택하면 해당 에셋이 Window > Asset Management > Addressables > Groups 창에 나타납니다.

Addressables Groups에서 각 에셋의 커스텀 주소와 위치를 확인할 수 있습니다.

편의를 위해 에셋의 개별 Address 필드에서 각 주소를 바꾸거나 한꺼번에 간소화할 수도 있습니다.

한 번의 메뉴 동작으로 Addressable Names를 간소화하거나 개별적으로 이름을 변경합니다.

기본 빌드 스크립트를 사용하여 Addressable Group 에셋 번들을 생성합니다.

이 에셋들을 번들로 묶어 다른 서버에서 호스팅하거나 프로젝트 내에서 로컬로 배포합니다. 에셋의 위치와 상관없이 시스템은 Addressable Name 문자열을 사용하여 에셋을 찾을 수 있습니다.

이제 어드레서블 API를 통해 어드레서블 에셋을 사용할 수 있습니다.

참고로 어드레서블이 없다면 씬에서 프리팹을 인스턴스화하기 위해 다음을 완료해야 합니다.

이 방식에는 참조된 모든 프리팹(예: prefabToCreate)이 씬에 필요하지 않더라도 메모리에 로드된다는 단점이 있습니다.

대신 어드레서블을 사용하여 다음과 같이 하세요.

이렇게 하면 에셋의 주소 문자열로 에셋이 로드됩니다. 즉, 필요한 상태가(CreatedPrefabWithAddress 내에서 Adressables.Instantiate를 호출할 때) 되기 전까지는 프리팹이 메모리에 로드되지 않습니다. 여기에 더해 고수준 참조 계산용으로 어드레서블을 사용하면 번들과 관련 에셋을 더는 사용하지 않을 때 자동으로 언로드할 수 있습니다.

어드레서블 에셋 시스템으로 메모리 최적화하기 포스팅에서 메모리 효율성을 높이는 방식으로 Addressables Groups를 구성하는 방법에 대한 예시를 볼 수 있습니다. 또한 어드레서블 개념 소개 튜토리얼에서는 어드레서블 에셋 시스템이 프로젝트에서 어떻게 작동하는지 간단히 설명합니다.

라이브 게임 운영: 어드레서블로 클라우드 콘텐츠 전송

라이브 게임을 운영 중이라면 Unity의 CCD(클라우드 콘텐츠 전송)와 어드레서블을 함께 사용해보세요. 어드레서블 시스템은 게임 에셋을 자동으로 찾고 호출할 수 있도록 저장 및 분류합니다. CCD는 해당 에셋을 플레이어에게 직접 푸시하며, 이는 코드와 완전히 무관하게 이루어집니다. 따라서 빌드 규모가 감소하며, 게임이 업데이트될 때마다 플레이어가 새 버전을 다운로드하고 설치할 필요가 없습니다. 자세한 내용은 어드레서블과 클라우드 콘텐츠 전송 간의 통합을 다룬 이 블로그 포스팅을 참조하세요.

프리 프로세서 지시문으로 컴파일 제어

플랫폼별 컴파일 기능을 사용하면 스크립트를 분할하여 특정한 플랫폼을 대상으로 코드를 컴파일하고 실행할 수 있습니다.

이 예시에서는 기존의 플랫폼 #define 지시문과 #if 컴파일러 지시문을 사용합니다.

DEVELOPMENT_BUILD #define을 사용하여 Development Build 옵션으로 빌드된 플레이어에서 스크립트가 실행 중인지 여부를 식별합니다.

특정 Unity 버전이나 스크립팅 백엔드를 대상으로 선택적으로 컴파일할 수 있으며, 에디터에서 테스트할 때 고유의 커스텀 #define 지시문을 제공할 수도 있습니다. Player 설정의 일부인 Other Settings 패널을 열고 Scripting Define Symbols로 이동합니다.

Unity의 프리 프로세서 지시문에 대한 자세한 내용은 플랫폼별 컴파일을 참조하세요.

스크립터블 오브젝트 사용하기 

스크립터블 오브젝트는 클래스 인스턴스와 별개로 대량의 데이터를 저장하는 데이터 컨테이너입니다. 스크립터블 오브젝트는 값이 복사되는 것을 방지하므로 프로젝트의 메모리 사용량을 줄일 수 있습니다. 전자책 본문에서 스크립터블 오브젝트 사용 방법에 대한 예시를 확인하세요. ScriptableObject 기술 자료를 통해서도 애플리케이션에서 스크립터블 오브젝트를 사용하는 자세한 방법을 확인하실 수 있습니다.

더 많은 자료가 필요하다면 Unity에서 스크립터블 오브젝트를 활용하여 데이터 관리하기를 시청하세요. 또한 스크립터블 오브젝트로 씬 워크플로 개선 포스팅에서는 스크립터블 오브젝트가 씬 관리에 어떤 도움을 주는지 설명합니다.

최적화 팁

저장된 데이터에는 JSON이나 XML과 같은 텍스트 기반 포맷이 아닌 MessagePack이나 Protocol Buffers와 같은 이진 직렬화 포맷을 사용하는 것이 좋습니다. 프로젝트 리뷰에서 이진 직렬화 포맷을 사용하면 텍스트 기반 포맷과 관련된 메모리 및 성능 문제를 줄일 수 있습니다.

선호하는 IDE 사용

Unity는 다음의 IDE(통합 개발 환경)를 지원합니다.

  • Visual Studio: Windows 및 macOS의 기본 IDE
  • Visual Studio Code: Windows, macOS, Linux
  • JetBrains Rider: Windows, macOS, Linux

위 세 가지 IDE는 패키지 관리자에서 패키지로 제공됩니다.

패키지로 제공되는 IDE 통합

Windows와 macOS에 Unity를 설치하면 기본적으로 Visual Studio가 설치됩니다. 다른 IDE를 사용하고 싶다면 Unity > Preferences > External Tools > External Script Editor에서 에디터를 찾아보세요.

Rider는 ReSharper를 기반으로 빌드되었으며 ReSharper의 기능 대부분을 포함합니다. 그리고 Unity의 .NET 4.6 스크립팅 런타임이 C# 디버깅을 지원합니다(C# 8.0). 자세한 내용은 Unity용 Rider에 대한 JetBrains의 기술 자료를 참조하세요.

VS Code는 디버깅, 작업 실행, 버전 관리를 지원하는 간소화된 무료 코드 에디터입니다. VS Code를 사용하려면 Unity에 Mono(macOS 및 Linux), Visual Studio Code C#, 그리고 Unity용 Visual Studio Code Debugger(공식적으로 지원되지 않음)가 필요합니다.

각 IDE는 고유의 장점을 가집니다. 니즈에 맞는 IDE를 선택하기 위해 자세한 정보가 필요하다면 IDE(통합 개발 환경) 지원을 참조하세요.

전자책에서 프로젝트에 도움이 되는 단축키 목록을 확인할 수 있습니다. 더불어 생산성을 높이는 Visual Studio 팁 동영상에서 Visual Studio가 제공하는 더 많은 워크플로 개선 사항을 살펴보세요.

JetBrains Rider에 대해 더 알고 싶으신가요? JetBrains Rider로 Unity에서 빠르게 C# 스크립팅하기를 시청하거나 JetBrains Rider를 코드 에디터로 사용하는 방법에 관한 을 확인하세요.

플레이 모드에서 디버깅

Unity 디버거를 사용하면 Unity 엔티티(Entity)가 플레이 모드일 때 C# 코드를 디버깅할 수 있습니다. 코드 에디터 내에 중단점을 연결하여 런타임 시 스크립트 코드의 상태와 현재 변수를 검사할 수 있습니다.

Unity 에디터 상태 표시줄의 우측 하단에서 Code Optimization 모드를 Debug로 설정합니다. Edit > Preferences > General > Code Optimization On Startup을 사용하여 시작할 때 이 모드를 변경할 수도 있습니다.

디버그 모드

코드 에디터에서 디버거가 실행을 일시 중지할 중단점을 설정합니다. 중단점을 토글하려는 위치에서 왼쪽 여백/거터 영역을 클릭하면 됩니다(여기에서 우클릭할 경우 다른 옵션에 대한 컨텍스트 메뉴를 확인할 수 있음). 강조 표시된 줄의 줄번호 옆에 빨간색 원이 나타납니다(아래 이미지 참조).

중단점 토글하기

코드 에디터에서 Attach to Unity를 선택한 다음, Unity 에디터에서 프로젝트를 실행합니다.

Unity에 디버거 연결하기

플레이 모드에서 애플리케이션은 중단점에서 일시 중지되며, 변수를 점검하고 의도치 않은 동작을 검사할 시간을 제공합니다.

변수 디버깅

위에서 보는 바와 같이 디버깅 시 실행 중에 한 번에 한 단계씩 쌓이는 목록을 참고하여 변수를 점검할 수 있습니다.

디버그 제어: Continue Execution(계속 실행), Step Over(단계 건너뛰기), Step Into(단계 시작), Step Out(단계 종료)

Continue Execution, Step Over, Step Into, Step Out 옵션을 사용하여 제어할 수 있습니다.

디버그 제어: Stop(중지)

디버깅을 중지하려면 Stop을 누르고 에디터에서 실행을 재개합니다. 

Unity 플레이어에서도 스크립트 코드를 디버깅할 수 있습니다. 플레이어를 빌드하기 전에 File > Build Settings에서 Development BuildScript Debugging이 모두 활성화되어 있는지 확인하세요. 플레이어가 스크립트 코드를 실행하기 전에 디버거를 기다리려면 Wait for Managed Debugger에 체크 표시합니다. 코드 에디터를 Unity 플레이어에 연결하려면 플레이어의 IP 주소(또는 머신 이름)와 포트를 선택합니다. 그런 다음 Visual Studio에서 Attach To Unity 옵션을 사용하여 일반적인 방법으로 진행합니다.

추가 디버깅 팁

Unity는 에디터가 실행되는 동안 정보를 시각화하는 데 도움이 되는 디버그 클래스를 제공합니다. 콘솔 창에 메시지나 경고를 표시하는 방법, 씬과 게임 뷰에서 시각화 선을 그리는 방법, 그리고 스크립트로 에디터에서 플레이 모드를 일시 중지하는 방법에 대해 알아보세요. 다음은 유용한 몇 가지 추가 팁입니다.

  1. Debug.Break로 실행을 일시 중지합니다. 애플리케이션을 수동으로 일시 중지하기 어려운 경우, 인스펙터에서 특정 값을 확인할 때 이 방법이 유용합니다.  
  2. 콘솔 메시지를 표시하려면 Debug.Log, Debug.LogWarning, Debug.LogError에 대해 잘 알아야 합니다. 조건을 실행하고 실패 시 오류를 로그하는 Debug.Assert도 유용합니다. 하지만 UNITY_ASSERTIONS 기호가 정의된 경우에만 작동한다는 점에 주의해야 합니다. 콘솔에 표시된 로그 메시지, 경고 및 오류  
  3. Debug.Log를 사용하면 오브젝트를 컨텍스트로 전달할 수 있습니다. 콘솔에서 메시지를 클릭하면 계층 창에 게임 오브젝트가 강조 표시됩니다.  
  4. 리치 텍스트를 사용하여 Debug.Log 문에 마크업 태그를 적용할 수 있습니다. 이는 콘솔에서 오류 리포트를 개선하는 데 유용합니다.  
  5. Unity는 비개발 빌드에서 디버그 로깅 API를 자동으로 제거하지 않습니다. 디버그 로그 호출을 커스텀 메서드로 래핑하고 [Conditional] 속성을 추가하세요. 디버그 로그를 모두 한 번에 컴파일하려면 플레이어 설정에서 해당하는 스크립팅 정의 기호를 제거하세요. 이는 디버그 로그를 #if… #endif 프리 프로세서 블록으로 래핑하는 것과 동일합니다. 자세한 내용은 일반 최적화 가이드를 참조하세요.  
  6. 물리와 관련된 문제를 해결 중이신가요? Debug.DrawLineDebug.DrawRay는 레이캐스팅을 시각화하는 데 도움이 됩니다.

Debug.DrawLine

  1. Development Build가 활성화된 경우에만 코드를 실행하려면 Debug.isDebugBuild가 true를 반환하는지 확인하세요.  
  2. Application.SetStackTraceLogType을 사용하거나 플레이어 설정에서 해당 옵션을 체크하여 스택 추적을 포함할 로그 메시지 유형을 결정하세요. 스택 추적은 유용하게 사용할 수 있지만, 속도가 느리고 가비지를 생성합니다.

선호도에 따른 Console Log Entry 설정

기본적으로 Console Log Entry는 두 줄로 표시됩니다. 하지만 간단히 한 줄로 표시하여 가독성을 높일 수 있습니다. 아래와 같이 하면 됩니다.

Console Log Entry 옵션

항목이 길면 여러 줄로 표시할 수도 있습니다.

컴파일러 상태 커스터마이즈

Unity에서는 컴파일 중에 우측 하단 모서리에 있는 아이콘이 잘 보이지 않을 수 있습니다. 이 커스텀 에디터 스크립트를 사용하여 EditorApplication.isCompiling을 호출하세요. 그러면 플로팅 창이 생성되어 컴파일러 상태를 더 분명하게 볼 수 있습니다.

MenuItem을 실행하여 창을 초기화하세요. 새로운 GUIStyle을 이용하면 원하는 방식으로 외관을 바꿀 수 있습니다.

소스 관리

Unity는 PerforcePlastic SCM, 두 가지 VCS(Version Control System, 버전 관리 시스템)와 통합됩니다. Unity 프로젝트에 Perforce나 Plastic SCM 서버를 설정하려면 Project Settings > Editor로 이동합니다. 그리고 Version Control에서 서버를 설정합니다(Perforce의 경우 사용자 자격 증명도 설정해야 함).

버전 관리를 사용하도록 프로젝트 설정

Unity를 사용하는 팀은 Plastic SCM Cloud Edition을 스토리지 용량 5GB에 사용자 3명까지 무료로 사용할 수 있습니다. Unity용 Plastic SCM을 사용하면 Unity 내에서 수정한 사항과 다른 팀원이 작업한 내용을 동기화하고 프로젝트 이력을 열람할 수 있습니다. Plastic SCM의 최근 업데이트에 대한 내용은 이 블로그를 참조하세요.

Git LFS(Large File Support)를 포함한 Git과 같은 외부 시스템을 사용하여 그래픽스나 사운드 리소스와 같은 대규모 에셋의 버전을 보다 효율적으로 관리할 수 있습니다. GitHub 호스팅 서비스를 보다 편리하게 사용하려면 Unity용 GitHub 플러그인을 설치합니다. 이 오픈 소스 확장을 통해 프로젝트 이력을 살펴보고, 브랜치에서 실험할 수 있습니다. 또한 변경 사항을 커밋하고, GitHub로 코드를 푸시하는 등 모든 작업을 Unity 내에서 수행할 수 있습니다.

Unity는 .gitignore 파일을 유지 관리합니다. 이러한 방식은 Git 저장소에서 보관하거나 보관하지 말아야 할 항목을 결정하고, 규칙을 적용하는 데 도움이 됩니다.

Unity용 GitHub 확장 기능

Unity Teams는 워크플로를 간소화하는 또 다른 옵션으로, 이를 통해 클라우드에 전체 프로젝트를 저장할 수 있습니다. 어디서나 백업하고 액세스할 수 있으므로 보다 수월하게 Unity 프로젝트를 저장하고, 다른 사람과 공유 및 동기화할 수 있습니다.

생산성 향상을 위한 팁을 소개하는 최신 전자책 다운로드

전자책

앞서 포스팅한 이번 시리즈의 이전 블로그 두 개, 에디터에서 워크플로 속도를 높이는 다섯 가지 방법아티스트를 위한 워크플로 속도 향상 팁을 확인해 보세요. 이 모든 팁을 총망라하여 실용적인 한 권의 전자책으로 엮은 Unity 2020 LTS로 생산성을 높이는 70여 가지 팁이 담긴 가이드를 무료로 다운로드할 수 있습니다.

다음 포스팅에서 다뤘으면 하는 주제나 기능이 있다면 댓글로 남겨주시고, 나만의 생산성 팁이 있다면 커뮤니티와 자유롭게 공유해 주시기 바랍니다.

2021년 9월 27일 엔진 & 플랫폼 | 10 분 소요

Is this article helpful for you?

Thank you for your feedback!