
게임 개발에서 수동 테스트는 빠르게 반복적이고 오류가 발생하기 쉬워질 수 있습니다. 새로운 기능을 작업하거나 버그를 수정하려고 할 때 이러한 끝이 없는 테스트 주기에 빠진 적이 있습니까?
코드 테스트를 자동화함으로써 창의적인 게임 개발에 더 많은 시간을 할애하고, 코드 추가, 제거 또는 변경이 프로젝트를 깨뜨리지 않도록 보장하는 반복적(하지만 중요한) QA 작업에 덜 시간을 쏟을 수 있습니다.
Unity는 Unity Test Framework를 사용하여 게임에 대한 자동화된 테스트를 생성, 관리 및 실행하는 데 도움을 줍니다.
Unity Test Framework (UTF)는 Edit 및 Play 모드 모두에서 프로젝트 코드를 테스트할 수 있게 해줍니다. 또한 독립 실행형, iOS 또는 Android와 같은 다양한 플랫폼을 위한 테스트 코드를 타겟팅할 수 있습니다.
UTF는 Package Manager를 사용하여 프로젝트에 추가하여 설치됩니다.
UTF는 .NET 언어를 위한 잘 알려진 오픈 소스 테스트 라이브러리인 NUnit과 통합됩니다.
UTF로 작성할 수 있는 테스트의 두 가지 주요 범주가 있습니다: 편집 모드와 재생 모드:
Edit mode 테스트는 Unity Editor에서 실행되며 Editor 및 게임 코드 모두에 접근할 수 있습니다. 이는 사용자 정의 Editor 확장을 테스트하거나 Editor에서 설정을 수정하고 Play 모드로 들어가는 테스트를 사용할 수 있음을 의미합니다. 이는 Inspector 값을 조정한 다음 다양한 설정으로 자동화된 테스트를 실행하는 데 유용합니다.
Play mode 테스트는 런타임에서 게임 코드를 실행할 수 있게 해줍니다. 테스트는 일반적으로 coroutines로 실행되며 [UnityTest] 속성을 사용합니다. 이것은 여러 프레임에서 실행할 수 있는 코드를 테스트할 수 있게 해줍니다. 기본적으로, 재생 모드 테스트는 에디터에서 실행되지만, 다양한 대상 플랫폼을 위한 독립 실행형 플레이어 빌드에서도 실행할 수 있습니다.

이 예제를 따라 하려면, Unity Asset Store에서 Starter Assets – Third Person Character Controller package를 설치하고 새 프로젝트에 가져와야 합니다.

Window > Package Manager를 통해 UTF를 설치합니다. 패키지 관리자에서 Unity Registry 아래의 Test Framework를 검색합니다. 버전 1.3.3(작성 시점의 최신 버전)을 선택해야 합니다.
UTF가 설치되면, 텍스트 편집기로 Packages/manifest.json 파일을 열고, dependencies 뒤에 testables 섹션을 추가합니다.
,
"testables": [
"com.unity.inputsystem"
]
파일을 저장합니다. 이것은 나중에 Unity.InputSystem.TestFramework 어셈블리를 참조하여 테스트하고 플레이어 입력을 에뮬레이션할 때 유용합니다.
에디터로 돌아가서 최신 버전이 설치되도록 허용합니다.

Window > General > Test Runner을 클릭하여 Test Runner 편집기 창을 봅니다.
이 튜토리얼의 이 부분에서는 재생 모드 테스트를 만드는 데 초점을 맞춥니다. Test Runner 창의 Create Test Assembly Folder 옵션을 사용하는 대신, 프로젝트 창을 사용하여 생성합니다.
프로젝트 자산 폴더의 루트를 강조 표시한 상태에서 마우스 오른쪽 버튼을 클릭하고 Create > Testing > Tests Assembly Folder를 선택합니다.
Tests 프로젝트 폴더가 추가되며, Tests.asmdef(어셈블리 정의) 파일이 포함됩니다. 이것은 테스트가 게임 모듈과 종속성을 참조하는 데 필요합니다.
캐릭터 컨트롤러 코드는 테스트에서 참조되며 어셈블리 정의도 필요합니다. 다음으로, 모듈 간 테스트를 용이하게 하기 위해 몇 가지 어셈블리 정의와 참조를 설정합니다.
Assets/StarterAssets/InputSystem 프로젝트 폴더를 마우스 오른쪽 버튼으로 클릭하고 Create > Assembly Definition을 선택합니다. 설명적인 이름을 지정합니다. 예를 들어 StarterAssetsInputSystem과 같이요.
새로운 StarterAssetsInputSystem.asmdef 파일을 선택하고 인스펙터를 사용하여 Unity.InputSystem에 대한 어셈블리 정의 참조를 추가합니다. 적용을 클릭합니다.
Assets/StarterAssets/ThirdPersonController/Scripts 프로젝트 폴더를 마우스 오른쪽 버튼으로 클릭하고 Create > Assembly Definition을 선택합니다. 설명적인 이름을 지정합니다. 예를 들어 ThirdPersonControllerMain과 같이요.
이전 어셈블리 정의와 마찬가지로 인스펙터에서 ThirdPersonControllerMain을 열고 다음에 대한 참조를 선택합니다:
- Unity.InputSystem
- StarterAssetsInputSystem
적용을 클릭합니다.

입력 시스템의 일부를 에뮬레이트하려면 테스트에서 참조해야 합니다. 또한, Third Person Controller 코드를 위해 생성할 어셈블리에서 StarterAssets 네임스페이스를 참조해야 합니다.
인스펙터에서 Tests.asmdef을 열고 다음 어셈블리 정의에 대한 참조를 추가합니다:
- UnityEngine.TestRunner
- UnityEditor.TestRunner
- Unity.InputSystem
- Unity.InputSystem.TestFramework
- ThirdPersonControllerMain
적용을 클릭합니다.

첫 번째 테스트는 Third Person Controller 패키지에서 주 캐릭터를 로드하고 이동하는 기본 사항을 다룰 것입니다.
간단한 테스트 환경 장면과 작업할 캐릭터 프리팹 리소스를 사용하여 새 프로젝트를 설정하는 것으로 시작하세요.
Assets/StarterAssets/ThirdPersonController/Scenes/Playground.unity라는 이름의 장면을 열고 파일 > 다른 이름으로 저장 메뉴를 사용하여 이 새 경로에 복사본을 저장하세요: Assets/Scenes/SimpleTesting.unity
게임 뷰에서 분홍색 재질이 보이면 렌더 파이프라인 변환기를 사용하여 Built-In Render Pipeline에서 Universal Render Pipeline(URP)으로 재질을 업그레이드하세요. 빠른 개요는 이 기사를 참조하세요.
프로젝트 자산 폴더에 Resources라는 새 폴더를 만드세요. 참고: 폴더 이름 “Resources”는 Unity의 Resources.Load() 메서드를 사용하기 위해 중요합니다.
장면 뷰에서 PlayerArmature 게임 오브젝트를 새 Resources 폴더로 드래그 앤 드롭하고, 프롬프트가 표시되면 원본 프리팹을 생성하도록 선택하세요. 프리팹 자산의 이름을 Character로 바꾸세요.
이것은 앞으로의 테스트에서 사용될 기본 캐릭터 프리팹이 될 것입니다.
새 SimpleTesting 장면에서 PlayerArmature 게임 오브젝트를 제거하고 장면에 대한 변경 사항을 저장하세요.
초기 테스트 설정의 마지막 단계로 파일 > 빌드 설정으로 이동하고, 장면/SimpleTesting 장면을 빌드 설정에 추가하기 위해 열려 있는 장면 추가를 선택하세요.
프로젝트 자산 폴더에서 테스트 폴더를 선택하세요. 마우스 오른쪽 버튼을 클릭하고 생성 > 테스트 > C# 테스트 스크립트를 선택하세요.
새 스크립트 CharacterTests의 이름을 지정하세요. 스크립트를 IDE에서 열어 자세히 살펴보세요.
초기 클래스 파일에는 테스트 기본 사항을 보여주는 두 개의 메서드 스텁이 제공됩니다.
다음으로, 테스트가 "테스트 중심" 게임 장면을 로드하도록 할 것입니다. 이 장면은 시스템이나 구성 요소를 테스트하는 데 필요한 최소한의 요소를 포함해야 합니다.
CharacterTests 클래스를 업데이트하여 두 개의 새로운 using 문을 추가하고 InputTestFixture 클래스를 구현하세요:
using UnityEngine.InputSystem;
using UnityEngine.SceneManagement;
public class CharacterTests : InputTestFixture
CharacterTests 클래스의 맨 위에 두 개의 private 필드를 추가하세요:
GameObject character = Resources.Load("Character");
Keyboard keyboard;
character 필드는 Resources 폴더에서 로드된 Character Prefab에 대한 참조를 저장합니다. Keyboard는 InputSystem에서 제공하는 Keyboard 입력 장치에 대한 참조를 보유합니다.
CharacterTests 클래스에서 자신의 Setup() 메서드를 제공하여 기본 InputTestFixture 클래스의 Setup() 메서드를 재정의하세요:
public override void Setup()
{
SceneManager.LoadScene("Scenes/SimpleTesting");
base.Setup();
keyboard = InputSystem.AddDevice();
var mouse = InputSystem.AddDevice();
Press(mouse.rightButton);
Release(mouse.rightButton);;
}
Setup() 메서드는 기본 클래스의 Setup() 메서드를 실행한 다음 테스트 장면을 로드하고 키보드 입력 장치를 초기화하여 자신의 CharacterTests 클래스를 설정합니다.
마우스 입력은 Third Person Controller가 시뮬레이션된/가상 키보드 장치에서 입력을 받기 시작하도록 추가됩니다. 이는 거의 '집중 설정' 작업과 같습니다.
첫 번째 테스트에서는 Prefab에서 캐릭터를 인스턴스화하고 null이 아님을 확인합니다. 테스트 클래스를 다음과 같이 추가하세요:
[테스트]
public void TestPlayerInstantiation()
{
GameObject characterInstance = GameObject.Instantiate(character, Vector3.zero, Quaternion.identity);
Assert.That(characterInstance, !Is.Null);
}
그곳에 있는 동안 샘플 템플릿 테스트 메서드를 정리할 수 있습니다. CharacterTestsSimplePasses 및 CharacterTestsWithEnumeratorPasses 메서드를 제거하세요.

스크립트를 저장하고 에디터의 테스트 실행기 창으로 돌아가세요. TestPlayerInstantiation 테스트를 강조 표시하고 선택한 실행을 클릭하세요.
초록 체크 마크는 통과한 테스트를 나타냅니다. 당신은 캐릭터가 리소스에서 로드되고 테스트 장면에 인스턴스화되며 그 시점에서 null이 아님을 확인했습니다.
이 테스트에 [테스트] 주석이 사용되었고 [UnityTest] 주석이 사용되지 않았다는 것을 알았을 것입니다. UnityTest 속성은 코루틴이 여러 프레임에 걸쳐 테스트를 실행할 수 있게 합니다. 이 경우 캐릭터를 인스턴스화하고 로드되었음을 확인하기만 하면 됩니다.
일반적으로 특별한 지시를 내리거나 프레임을 건너뛰거나 플레이 모드에서 특정 시간 동안 기다릴 필요가 없는 한 편집 모드에서는 NUnit 테스트 속성을 사용하는 것이 좋습니다.

다음으로, 전방 컨트롤러 키를 누르고 있으면 캐릭터가 앞으로 이동한다고 주장할 때 UnityTest를 사용할 것입니다.
아래 제공된 새로운 테스트 메서드를 CharacterTests 클래스에 추가하세요.
두 개의 새로운 테스트 도우미 메서드가 나타났습니다; Press() 및 Release(). 이 두 메서드는 InputTestFixture 기본 클래스에서 제공되며 InputSystem 제어를 누르고 놓는 것을 에뮬레이션하여 도와줍니다.
TestPlayerMoves() 메서드는 다음과 같은 작업을 수행합니다:
위치 (X:에서 캐릭터 프리팹의 인스턴스를 생성합니다. 0, Y: 0, Z: 0)
가상 키보드에서 위쪽 화살표 키를 1초 동안 누른 다음 놓습니다.
1초 더 기다립니다(캐릭터가 느려지고 멈추기 위해).
캐릭터가 Z축에서 1.5 단위보다 큰 위치로 이동했는지 확인합니다.
파일을 저장하고 Test Runner로 돌아가서 새 테스트를 실행합니다.

다음으로, 간단한 플레이어 건강 구성 요소를 추가하여 사용자 정의 MonoBehaviour 스크립트를 테스트합니다.
Assets/StarterAssets/ThirdPersonController/Scripts 아래에 새 스크립트를 만듭니다. 이름을 PlayerHealth로 지정합니다.
IDE에서 스크립트를 열고 아래 제공된 코드로 내용을 교체합니다.
여기에 많은 새로운 코드가 추가되었습니다. 요약하자면, 이 스크립트는 플레이어 캐릭터가 낙하 상태인지 여부를 결정합니다. 낙하 상태에서 땅에 한 번 부딪히면 캐릭터의 건강이 10% 감소합니다.
Assets/Resources 아래에서 캐릭터 프리팹을 찾습니다. 프리팹을 열고 새로운 PlayerHealth 스크립트 구성 요소를 추가합니다.
다음으로, 테스트 장면을 사용하여 플레이어의 건강이 절벽에서 떨어진 후 감소하는지 확인합니다.
[UnityTest] 속성을 사용하여 낙하 피해를 테스트하는 플레이 모드 테스트를 작성할 수 있습니다. 0.2초 이상 떨어질 때 플레이어는 0.1f의 피해를 입어야 합니다(최대 건강의 10%에 해당).
SimpleTesting 장면에서 절벽으로 올라가는 계단을 볼 수 있습니다. 이것은 캐릭터를 생성하고 PlayerHealth 스크립트를 테스트하기 위한 테스트 플랫폼입니다.
다시 CharacterTests.cs를 열고 TestPlayerFallDamage라는 새로운 테스트 메서드를 추가하세요:
[UnityTest]
public IEnumerator TestPlayerFallDamage()
{
// 테스트 장면에서 충분히 높은 영역에 캐릭터를 생성합니다.
GameObject characterInstance = GameObject.Instantiate(character, new Vector3(0f, 4f, 17.2f), Quaternion.identity);
// PlayerHealth 구성 요소에 대한 참조를 가져오고 현재 전체 건강(1f)인지 확인합니다.
var characterHealth = characterInstance.GetComponent();
Assert.That(characterHealth.Health, Is.EqualTo(1f));
// 가장자리에서 걸어 나가고 낙하를 기다립니다.
Press(keyboard.upArrowKey);
yield return new WaitForSeconds(0.5f);
Release(keyboard.upArrowKey);
yield return new WaitForSeconds(2f);
// 낙하 피해로 인해 1 건강 포인트가 손실되었는지 확인합니다.
Assert.That(characterHealth.Health, Is.EqualTo(0.9f));
}
클래스 파일의 가장 위에 StarterAssets 네임스페이스에 대한 using 참조를 추가해야 합니다:
using StarterAssets;
위의 테스트는 일반적으로 테스트에서 발견되는 전형적인 arrange, act, assert (AAA) 패턴을 따릅니다:
Assert 섹션은 테스트 중인 메서드의 동작이 예상대로 작동하는지 확인합니다.
다음으로, 간단한 플레이어 건강 구성 요소를 추가하여 사용자 정의 MonoBehaviour 스크립트를 테스트합니다.
Assets/StarterAssets/ThirdPersonController/Scripts 아래에 새 스크립트를 만듭니다. 이름을 PlayerHealth로 지정합니다.
IDE에서 스크립트를 열고 아래 제공된 코드로 내용을 교체합니다.
여기에 많은 새로운 코드가 추가되었습니다. 요약하자면, 이 스크립트는 플레이어 캐릭터가 낙하 상태인지 여부를 결정합니다. 낙하 상태에서 땅에 한 번 부딪히면 캐릭터의 건강이 10% 감소합니다.
Assets/Resources 아래에서 캐릭터 프리팹을 찾습니다. 프리팹을 열고 새로운 PlayerHealth 스크립트 구성 요소를 추가합니다.
다음으로, 테스트 장면을 사용하여 플레이어의 건강이 절벽에서 떨어진 후 감소하는지 확인합니다.
[UnityTest] 속성을 사용하여 낙하 피해를 테스트하는 플레이 모드 테스트를 작성할 수 있습니다. 0.2초 이상 떨어질 때 플레이어는 0.1f의 피해를 입어야 합니다(최대 건강의 10%에 해당).
SimpleTesting 장면에서 절벽으로 올라가는 계단을 볼 수 있습니다. 이것은 캐릭터를 생성하고 PlayerHealth 스크립트를 테스트하기 위한 테스트 플랫폼입니다.
다시 CharacterTests.cs를 열고 TestPlayerFallDamage라는 새로운 테스트 메서드를 추가하세요:
[UnityTest]
public IEnumerator TestPlayerFallDamage()
{
// 테스트 장면에서 충분히 높은 영역에 캐릭터를 생성합니다.
GameObject characterInstance = GameObject.Instantiate(character, new Vector3(0f, 4f, 17.2f), Quaternion.identity);
// PlayerHealth 구성 요소에 대한 참조를 가져오고 현재 전체 건강(1f)인지 확인합니다.
var characterHealth = characterInstance.GetComponent();
Assert.That(characterHealth.Health, Is.EqualTo(1f));
// 가장자리에서 걸어 나가고 낙하를 기다립니다.
Press(keyboard.upArrowKey);
yield return new WaitForSeconds(0.5f);
Release(keyboard.upArrowKey);
yield return new WaitForSeconds(2f);
// 낙하 피해로 인해 1 건강 포인트가 손실되었는지 확인합니다.
Assert.That(characterHealth.Health, Is.EqualTo(0.9f));
}
클래스 파일의 가장 위에 StarterAssets 네임스페이스에 대한 using 참조를 추가해야 합니다:
using StarterAssets;
위의 테스트는 일반적으로 테스트에서 발견되는 전형적인 arrange, act, assert (AAA) 패턴을 따릅니다:
단위 테스트 메서드의 Arrange 섹션은 객체를 초기화하고 테스트 중인 메서드에 전달되는 데이터의 값을 설정합니다.
단위 테스트 메서드의 Act 섹션은 정리된 매개변수로 테스트 중인 메서드를 호출합니다. 이 경우, 테스트 중인 메서드를 호출하는 것은 플레이어가 떨어진 후 땅에 닿을 때 물리적 상호작용에 의해 처리됩니다.
Assert 섹션은 테스트 중인 메서드의 동작이 예상대로 작동하는지 확인합니다.

편집기로 돌아가서 새로운 테스트를 실행하세요. 재생 모드에서 실행하면 캐릭터가 가장자리를 넘어 걷고, 떨어지며(낙하를 분류하기 위한 0.2초 임계값 초과), 땅에 부딪힌 후 피해를 입는 것을 볼 수 있습니다.
테스트는 코드 변경이 기능을 깨지 않도록 테스트하는 목적뿐만 아니라, 개발자가 설정을 조정할 때 게임의 다른 측면에 대해 생각하는 데 도움이 되는 문서나 포인터 역할도 할 수 있습니다.

앞서 언급했듯이, 기본적으로 테스트 러너에서 재생 모드 테스트를 실행하면 Unity Editor를 사용하여 재생 모드에서 실행됩니다. 독립 실행형 플레이어에서도 실행되도록 변경할 수 있습니다.
테스트 러너 창의 실행 위치 드롭다운 선택을 사용하여 독립 실행형 플레이어 빌드에서 실행할 테스트를 전환합니다.
테스트 모음 구축을 시작한 후, 다음 단계는 빌드가 완료된 후 자동으로 실행하는 것입니다. 빌드 후 실행되는 자동화된 단위 및 통합 테스트는 가능한 한 빨리 회귀 또는 버그를 잡는 데 유용합니다. 그들은 또한 클라우드의 원격 자동화 빌드 시스템의 일부로 실행될 수 있습니다.
종종 테스트 실행 결과를 사용자 정의 형식으로 캡처하여 결과를 더 넓은 청중과 공유하고 싶을 것입니다. Unity Editor 외부에서 테스트 결과를 캡처하려면 빌드 및 실행 프로세스를 분리해야 합니다.
테스트 프로젝트 폴더에 SetupPlaymodeTestPlayer라는 새 스크립트를 만듭니다.
SetupPlaymodeTestPlayer 클래스는 ITestPlayerBuildModifier 인터페이스를 구현합니다. 이것을 사용하여 빌드의 플레이어 옵션을 수신하고 이를 수정할 수 있는 ModifyOptions 메서드를 재정의하고 "후크"합니다.
using System.IO;
using UnityEditor;
using UnityEditor.TestTools;
[어셈블리: TestPlayerBuildModifier(typeof(SetupPlaymodeTestPlayer))]
public class SetupPlaymodeTestPlayer : ITestPlayerBuildModifier
{
public BuildPlayerOptions ModifyOptions(BuildPlayerOptions playerOptions)
{
playerOptions.options &= ~(BuildOptions.AutoRunPlayer | BuildOptions.ConnectToHost);
var buildLocation = Path.GetFullPath("TestPlayers");
var fileName = Path.GetFileName(playerOptions.locationPathName);
if (!string.IsNullOrEmpty(fileName))
buildLocation = Path.Combine(buildLocation, fileName);
playerOptions.locationPathName = buildLocation;
return playerOptions;
}
}
이 사용자 정의 플레이어 빌드 수정자 스크립트는 테스트가 재생 모드에서 실행될 때 다음과 같은 작업을 수행합니다(실행 위치: On Player):
빌드된 플레이어의 자동 실행을 비활성화하고 실행 중인 호스트에 연결하려고 시도하는 플레이어 옵션을 건너뜁니다.
빌드 경로 위치를 프로젝트 내의 전용 경로(TestPlayers)로 변경합니다.
이제 완성되었으므로 빌드가 완료될 때마다 TestPlayers 폴더에 위치할 것으로 예상할 수 있습니다. 이제 빌드 수정이 완료되었으며 빌드와 실행 간의 연결이 끊어졌습니다.
다음으로 결과 보고를 구현할 것입니다. 이렇게 하면 테스트 결과를 사용자 지정 위치에 기록할 수 있으며, 자동 보고서 생성 및 퍼블리싱을 준비할 수 있습니다.
Tests 프로젝트 폴더에 ResultSerializer라는 이름의 새 스크립트를 만드세요 (아래 제공됨). 이 클래스는 TestRunCallback에 대한 어셈블리 참조를 사용하고 ITestRunCallback 인터페이스를 구현합니다.
ITestRunCallback의 이 구현은 테스트 결과를 testresults.xml라는 XML 파일에 기록하기 위해 테스트가 포함된 플레이어 빌드를 설정하는 RunFinished 메서드를 포함합니다.

SetupPlaymodeTestPlayer.cs와 ResultSerializer.cs가 결합되어 이제 빌드 및 실행 프로세스가 분리되었습니다. 테스트를 실행하면 플레이어 플랫폼의 Application.persistentDataPath location에 위치한 testresults.xml에 결과가 출력됩니다.
이 훅 클래스의 일부 유형을 사용하려면 Tests.asmdef에 추가 참조를 추가해야 합니다. UnityEditor.UI.EditorTests 어셈블리 정의 참조를 추가하도록 업데이트하세요.
플레이어에서 테스트를 실행하면 이제 프로젝트의 TestPlayers 폴더 아래에 플레이어 빌드 출력과 Application.persistentDataPath 위치에 testresults.xml 파일이 생성됩니다.

Unity Test Framework 과정
Test Framework 패키지에는 Unity로 테스트하는 방법을 배우는 데 도움이 되는 샘플 연습이 포함된 테스트 과정이 포함되어 있습니다. 패키지 관리자를 사용하여 과정의 프로젝트 파일을 반드시 가져오세요.
패키지 관리자 > 패키지 사용: Unity 레지스트리 > Test Framework에서 샘플 드롭다운 목록을 찾아 과정 연습을 가져옵니다.
연습은 프로젝트에 가져와서 Assets/Samples/Test Framework 아래에 위치하게 됩니다. 각 샘플에는 작업할 수 있는 연습 폴더와 함께 진행하면서 자신의 작업과 비교할 수 있는 솔루션이 포함되어 있습니다.
코드 QA UTF
이 코펜하겐에서의 Unite 강연은 UTF에 대해 더 자세히 설명하고 테스트 사용자 정의를 위한 몇 가지 흥미로운 사용 사례를 제공합니다. 무엇이 가능한지 확인하기 위해 꼭 확인해 보세요.
Unity에서 디버깅하기
Unity에서 디버깅 작업 흐름을 가속화하는 기사들:
- Microsoft Visual Studio 2022
- Microsoft Visual Studio Code
고급 기술 전자책
Unity는 전문 개발자가 게임 코드를 최적화하는 데 도움이 되는 여러 고급 가이드를 제공합니다. C# 스타일 가이드 만들기: 산업 전문가의 조언을 바탕으로 팀이 깔끔하고 읽기 쉬우며 확장 가능한 코드베이스를 개발하는 데 도움이 되는 코드 스타일 가이드를 만드는 방법에 대한 조언을 수집하여 더 깔끔한 코드를 작성하세요.
우리 사용자들 사이에서 또 다른 인기 있는 가이드는 Unity로 생산성을 높이는 70+ 팁입니다. 경험이 풍부한 개발자조차 놓쳤을 수 있는 팁을 포함하여 Unity 2020 LTS와 함께하는 일상적인 집합 작업 흐름을 개선하기 위한 시간 절약 팁으로 가득 차 있습니다.
기술 자료
최신 TestRunner API를 더 깊이 탐색하고, 다른 UTF 사용자 정의 속성에 대해 배우고, UTF 문서와 연결할 수 있는 추가 생명 주기를 발견하세요.
Unity의 모든 고급 전자책과 기사를 Unity 모범 사례 허브에서 찾으세요.