무엇을 찾고 계신가요?
Hero background image
Unity 테스트 프레임워크로 게임에 대한 자동화된 테스트를 실행하는 방법

게임 개발에서 수동 테스트는 빠르게 반복되고 오류가 발생하기 쉽습니다. 새로운 기능을 개발하거나 버그를 수정할 때 끝이 없어 보이는 테스트 주기를 반복하고 있는 자신을 발견한 적이 있으신가요?

코드 테스트를 자동화하면 코드 추가, 제거, 변경으로 인해 프로젝트가 중단되지 않도록 하는 반복적인(그러나 중요한) QA 작업은 줄이고 창의적인 게임 개발에 더 많은 시간을 할애할 수 있습니다.

유니티는 Unity 테스트 프레임워크를 사용하여 게임에 대한 자동화된 테스트를 생성, 관리 및 실행할 수 있도록 지원합니다.

Unity 테스트 프레임워크에서 두 가지 방법으로 테스트

Unity 테스트 프레임워크(UTF)를 사용하면 편집 모드와 플레이 모드 모두에서 프로젝트 코드를 테스트할 수 있습니다. 독립형, iOS 또는 Android와 같은 다양한 플랫폼에 대한 테스트 코드를 타겟팅할 수도 있습니다.

UTF는 패키지 관리자를 사용하여 프로젝트에 추가하여 설치합니다.

내부적으로 UTF는 잘 알려진 .NET 언어용 오픈 소스 테스트 라이브러리인 NUnit과 통합됩니다.

UTF로 작성할 수 있는 테스트에는 편집 모드와 플레이 모드의 두 가지 주요 범주가 있습니다:

편집 모드 테스트는 Unity 에디터에서 실행되며 에디터와 게임 코드에 모두 액세스할 수 있습니다. 즉, 사용자 지정 에디터 확장 기능을 테스트하거나 테스트를 사용하여 에디터에서 설정을 수정하고 재생 모드로 들어가면 인스펙터 값을 조정한 다음 다양한 설정으로 자동화된 테스트를 실행하는 데 유용합니다.

플레이 모드 테스트를 통해 런타임에 게임 코드를 연습할 수 있습니다. 테스트는 일반적으로 [UnityTest] 속성을 사용하여 코루틴으로 실행됩니다. 이를 통해 여러 프레임에 걸쳐 실행할 수 있는 코드를 테스트할 수 있습니다. 기본적으로 플레이 모드 테스트는 에디터에서 실행되지만 다양한 타겟 플랫폼의 독립형 플레이어 빌드에서 실행할 수도 있습니다.

자동화된 테스트
Unity 에셋 스토어에서 제공되는 3인칭 캐릭터 컨트롤러 패키지
Unity 테스트 프레임워크 테스트 방법

이 예제를 따라 하려면 Unity 에셋 스토어에서 스타터 에셋 - 삼인칭 캐릭터 컨트롤러 패키지를 설치하고 새 프로젝트에 임포트해야 합니다.

자동화된 테스트
매니페스트.json 파일
Unity 테스트 프레임워크 설정

창 > 패키지 관리자를 통해 UTF를 설치합니다. 패키지 관리자의 Unity 레지스트리에서 테스트 프레임워크를 검색합니다. 버전 1.3.3(작성 시점의 최신 버전)을 선택해야 합니다.

UTF가 설치되면 텍스트 편집기로 Packages/manifest.json 파일을 열고 다음과 같이 종속성 뒤에 테스트 가능 섹션을 추가합니다:

,
"testables": [
"com.unity.inputsystem"
에 동의합니다]

파일을 저장합니다. 나중에 플레이어 입력을 테스트하고 에뮬레이트하기 위해 Unity.InputSystem.TestFramework 어셈블리를 참조해야 할 때 유용하게 사용할 수 있습니다.

편집기로 돌아가서 최신 버전이 설치되도록 허용합니다.

자동화된 테스트
인스펙터의 3인칭 캐릭터 컨트롤러용 어셈블리 정의 레퍼런스
테스트 어셈블리 정의

창 > 일반 > 테스트 러 너를 클릭하여 테스트 러 너 편집기 창을 확인합니다.

이 튜토리얼의 이 부분에서는 플레이 모드 테스트를 만드는 데 중점을 둡니다. 테스트 실행기 창에서 테스트 어셈블리 폴더 생성 옵션을 사용하는 대신 프로젝트 창을 사용하여 테스트 어셈블리 폴더를 생성합니다.

프로젝트 에셋 폴더의 루트를 강조 표시한 상태에서 마우스 오른쪽 버튼으로 클릭하고 생성 > 테스트 > 테스트 어셈블리 폴더를 선택합니다.

Tests 프로젝트 폴더가 추가되고 Tests.asmdef (어셈블리 정의) 파일이 들어 있습니다. 게임 모듈 및 종속성을 참조하는 테스트에 필요합니다.

캐릭터 컨트롤러 코드는 테스트에서 참조되며 어셈블리 정의도 필요합니다. 다음으로 모듈 간 테스트를 용이하게 하기 위해 몇 가지 어셈블리 정의와 참조를 설정합니다.

Assets/StarterAssets/InputSystem 프로젝트 폴더를 마우스 오른쪽 버튼으로 클릭하고 생성 > 어셈블리 정의를 선택합니다. 스타터 에셋 입력 시스템과 같이 설명이 포함된 이름을 지정합니다.

StarterAssetsInputSystem.asmdef 파일을 선택하고 인스펙터를 사용하여 Unity.InputSystem에 어셈블리 정의 레퍼런스를 추가합니다. 적용을 클릭합니다.

Assets/StarterAssets/ThirdPersonController/Scripts 프로젝트 폴더를 마우스 오른쪽 버튼으로 클릭하고 생성 > 어셈블리 정의 를 선택합니다. 예를 들어 ThirdPersonControllerMain과 같이 설명이 가능한 이름을 지정합니다.

이전 어셈블리 정의에서와 마찬가지로 인스펙터에서 ThirdPersonControllerMain을 열고 다음에 대한 레퍼런스를 선택합니다:

- Unity.InputSystem

- StarterAssetsInputSystem

적용을 클릭합니다.

자동화된 테스트
어셈블리 정의에 대한 참조 추가
어셈블리 정의에 대한 참조 추가

입력 시스템의 일부를 에뮬레이트하려면 테스트에서 이를 참조해야 합니다. 또한 삼인칭 컨트롤러 코드를 위해 생성할 어셈블리에서 스타터 에셋 네임스페이스를 참조해야 합니다.

인스펙터에서 Tests.asmdef를 열고 다음 어셈블리 정의에 대한 참조를 추가합니다:

- UnityEngine.TestRunner

- UnityEditor.TestRunner

- Unity.InputSystem

- Unity.InputSystem.TestFramework

- ThirdPersonControllerMain

적용을 클릭합니다.

빌드 설정 창
빌드 설정 창
첫 번째 테스트

첫 번째 테스트에서는 3인칭 컨트롤러 패키지에서 주인공 캐릭터를 불러오고 이동하는 기본 사항을 다룹니다.

간단한 테스트 환경 씬과 작업할 캐릭터 프리팹 리소스로 새 프로젝트를 설정하는 것으로 시작하세요.

Assets/StarterAssets/ThirdPersonController/Scenes/Playground.unity라는 이름의 씬을 열고 파일 > 다른 이름으로 저장 메뉴를 사용하여 이 새 경로에 사본을 저장합니다: 에셋/씬/심플테스팅.unity

게임 뷰에 분홍색 머티리얼이 표시되면 렌더 파이프라인 변환기를 사용하여 빌트인 렌더 파이프라인에서 유니버설 렌더 파이프라인(URP)으로 머티리얼을 업그레이드하세요. 간단한 개요는 이 문서를 참조하세요.

프로젝트 자산 폴더에 리소스라는 새 폴더를 만듭니다. 참고: 여기서 폴더 이름 "Resources"는 Unity Resources.Load() 메서드를 사용할 수 있도록 하기 위해 중요합니다.

씬 뷰에서 PlayerArmature 게임 오브젝트를 새 리소스 폴더로 끌어다 놓고 메시지가 표시되면 원본 프리팹을 생성하도록 선택합니다. 프리팹 에셋 캐릭터의 이름을 바꿉니다.

이 캐릭터는 앞으로 테스트에 사용되는 기본 캐릭터 프리팹이 됩니다.

SimpleTesting 씬에서 PlayerArmature 게임 오브젝트를 제거하고 씬에 변경 사항을 저장합니다.

초기 테스트 설정의 마지막 단계는 파일 > 빌드 설정으로 이동하여 열린 장면 추가를 선택하여 빌드 설정에 장면/간단한 테스트 장면을 추가합니다.

C# 테스트 스크립트 만들기

프로젝트 에셋 폴더에서 테스트 폴더를 선택합니다. 마우스 오른쪽 버튼을 클릭하고 만들기 > 테스트 > C# 테스트 스크립트를 선택합니다.

새 스크립트의 이름을 CharacterTests로 지정합니다. IDE에서 스크립트를 열어 자세히 살펴보세요.

초기 클래스 파일과 함께 제공되는 두 개의 메서드 스텁은 몇 가지 테스트 기본 사항을 보여줍니다.

다음으로, 테스트가 "테스트 중심"의 게임 장면을 로드하도록 합니다. 집중하고 있는 시스템이나 컴포넌트를 테스트하는 데 필요한 최소한의 내용이 포함된 장면이어야 합니다.

CharacterTests 클래스를 업데이트하여 두 개의 새로운 사용 문을 추가하고 InputTestFixture 클래스를 구현합니다:

using UnityEngine.InputSystem;
using UnityEngine.SceneManagement;

공용 클래스 CharacterTests : InputTestFixture

CharacterTests 클래스 상단에 두 개의 비공개 필드를 추가합니다:

GameObject character = Resources.Load<GameObject>("Character");
키보드 키보드;

캐릭터 필드에는 리소스 폴더에서 로드된 캐릭터 프리팹에 대한 참조가 저장됩니다. Keyboard는 InputSystem에서 제공하는 키보드 입력 장치에 대한 참조를 보유합니다.

CharacterTests 클래스에서 자체 메서드를 제공하여 기본 InputTestFixture 클래스의 Setup() 메서드를 재정의합니다:

공용 오버라이드 void Setup()
{
SceneManager.LoadScene("Scenes/SimpleTesting");
base.Setup();
keyboard = InputSystem.AddDevice<Keyboard>();

var mouse = InputSystem.AddDevice<Mouse>();
Press(mouse.rightButton);
Release(mouse.rightButton);;
}

Setup() 메서드는 기본 클래스 Setup() 메서드를 실행한 다음 테스트 장면을 로드하고 키보드 입력 장치를 초기화하여 고유한 CharacterTests 클래스를 설정합니다.

마우스 입력은 순전히 3인칭 컨트롤러가 시뮬레이션/가상 키보드 장치에서 입력을 받기 시작하기 위해 추가한 것입니다. 이것은 거의 '초점 설정' 작업과 비슷합니다.

첫 번째 테스트에서는 프리팹에서 캐릭터를 인스턴스화하고 null이 아닌지 확인합니다. 테스트 클래스에 다음 메서드를 추가합니다:

[테스트]
public void TestPlayerInstantiation()
{
게임 오브젝트 캐릭터 인스턴스 = 게임 오브젝트 인스턴스화(캐릭터, 벡터3.0, 쿼터니언.아이덴티티);
Assert.That(characterInstance, !Is.Null);
}

여기에 있는 동안 샘플 템플릿 테스트 방법을 정리하는 것이 좋습니다. CharacterTestsSimplePassesCharacterTestsWithEnumeratorPasses 메서드를 제거합니다.

테스트 통과 확인
녹색 확인 표시는 테스트가 성공적으로 통과되었음을 의미합니다.
첫 번째 테스트 통과하기

스크립트를 저장하고 에디터의 테스트 실행기 창으로 돌아갑니다. TestPlayerInstantiation 테스트를 강조 표시하고 선택된 항목 실행을 클릭합니다.

녹색 확인 표시는 테스트 통과를 의미합니다. 리소스에서 캐릭터를 로드하고 테스트 장면에 인스턴스화할 수 있으며 그 시점에서 null이 아니라고 주장했습니다.

이 테스트에는 [UnityTest] 어노테이션 대신 [Test] 어노테이션이 사용되었다는 것을 눈치채셨을 것입니다. UnityTest 속성을 사용하면 코루틴이 여러 프레임에 걸쳐 테스트를 실행할 수 있습니다. 이 경우 캐릭터를 인스턴스화하고 로드되었음을 어설트하기만 하면 됩니다.

일반적으로 특별한 지침이 필요하거나 프레임을 건너뛰어야 하거나 플레이 모드에서 일정 시간 동안 기다려야 하는 경우가 아니라면 편집 모드에서 UnityTest 속성 대신 NUnit Test 속성을 사용하는 것이 좋습니다.

플레이 모드에서 캐릭터 움직임 테스트
플레이 모드에서 캐릭터 움직임 테스트
캐릭터 움직임 테스트

다음으로, 앞으로 가기 컨트롤러 키를 누르고 있으면 캐릭터가 앞으로 이동한다고 가정하면서 UnityTest를 사용합니다.

아래에 제공된 새 테스트 메서드를 CharacterTests 클래스에 추가합니다.

두 가지 새로운 테스트 도우미 메서드인 Press() 및 Release()가 등장했습니다. 이 두 가지 모두 InputTestFixture 베이스 클래스에서 제공하며 InputSystem 컨트롤을 누르고 놓는 것을 에뮬레이트하여 도움을 줍니다.

TestPlayerMoves() 메서드는 다음을 수행합니다:

캐릭터 프리팹에서 캐릭터의 인스턴스를 (X) 위치에 인스턴스화합니다: 0, Y: 0, Z: 0)

가상 키보드의 위쪽 화살표 키를 1초간 누른 다음 놓습니다.

1초 더 기다립니다(캐릭터가 느려지고 움직이지 않을 때까지).

캐릭터가 Z축에서 1.5단위보다 큰 위치로 이동했음을 나타냅니다.

파일을 저장하고 테스트 러너로 돌아가서 새 테스트를 실행합니다.

플레이어 상태 스크립트
플레이어 상태 스크립트
추락 손상 테스트

다음으로 간단한 플레이어 생명력 컴포넌트를 추가하여 커스텀 모노비헤이비어 스크립트를 테스트합니다.

Assets/StarterAssets/ThirdPersonController/Scripts에서 새 스크립트를 생성합니다. 이름을 PlayerHealth로 지정합니다.

IDE에서 스크립트를 열고 아래 제공된 코드로 내용을 바꿉니다.

여기에는 새로운 코드가 많이 추가되었습니다. 요약하자면, 이 스크립트는 플레이어 캐릭터가 낙하 상태에 있는지 여부를 결정합니다. 낙하 상태에서 지면에 한 번 부딪히면 캐릭터의 생명력이 10% 감소합니다.

에셋/리소스에서 캐릭터 프리팹을 찾습니다. 프리팹을 열고 새 PlayerHealth 스크립트 컴포넌트를 추가합니다.

다음으로 테스트 씬을 사용하여 플레이어가 난간에서 떨어지면 체력이 떨어진다고 가정합니다.

UnityTest] 속성을 사용하여 낙하 피해를 테스트하는 플레이 모드 테스트를 작성할 수 있습니다. 0.2초 이상 쓰러지면 플레이어는 0.1피의 피해(최대 생명력의 10%에 해당하는 피해)를 받습니다.

단순 테스트 장면에서 난간으로 이어지는 계단을 볼 수 있습니다. 이 플랫폼은 캐릭터를 스폰하고 플레이어헬스 스크립트를 테스트하기 위한 테스트 플랫폼입니다.

CharacterTests.cs를 다시 열고 TestPlayerFallDamage라는 새 테스트 메서드를 추가합니다:

[UnityTest]
public IEnumerator TestPlayerFallDamage()
{
// 테스트 씬에서 충분히 높은 영역에 캐릭터를 스폰합니다.
게임 오브젝트 캐릭터 인스턴스 = 게임 오브젝트 인스턴스화(캐릭터, 새로운 벡터3(0f, 4f, 17.2f), 쿼터니언.아이덴티티);

// PlayerHealth 컴포넌트에 대한 레퍼런스를 가져와 현재 최대 체력(1f)을 어설트합니다.
var characterHealth = characterInstance.GetComponent<PlayerHealth>();
Assert.That(characterHealth.Health, Is.EqualTo(1f));

// 난간에서 내려와 낙하를 기다립니다.
Press(keyboard.upArrowKey);
yield return new WaitForSeconds(0.5f);
Release(keyboard.upArrowKey);
yield 반환 새로운 WaitForSeconds(2f);

// 추락 피해로 인해 체력 1점을 잃었다고 가정합니다.
Assert.That(characterHealth.Health, Is.EqualTo(0.9f));
}

또한 클래스 파일의 맨 위에 스타터 에셋 네임스페이스에 대한 사용 참조를 추가해야 합니다:

스타터 에셋을 사용합니다;

위의 테스트는 테스트에서 흔히 볼 수 있는 일반적인 AAA(배열, 실행, 어설트) 패턴을 따릅니다:

단위 테스트 메서드의 배열 섹션은 객체를 초기화하고 테스트 중인 메서드에 전달되는 데이터의 값을 설정합니다.

Act 섹션은 정렬된 매개 변수를 사용하여 테스트 중인 메서드를 호출합니다. 이 경우 테스트 중인 메서드 호출은 플레이어가 넘어진 후 바닥에 닿을 때 물리 상호작용으로 처리됩니다.

Assert 섹션에서는 테스트 중인 메서드의 동작이 예상대로 작동하는지 확인합니다.

테스트 러너 - 테스트 실행
캐릭터가 게임에서 의도한 대로 낙하하는지, 정확한 데미지를 입는지 확인하는 테스트입니다.
새 테스트 실행

편집기로 돌아가서 새 테스트를 실행합니다. 플레이 모드에서 실행하면 캐릭터가 가장자리에서 걷다가 넘어지고(넘어짐으로 분류되는 0.2초 임계값 초과), 땅에 부딪힌 후 피해를 입는 것을 볼 수 있습니다.

테스트는 코드 변경이 기능을 손상시키지 않는지 테스트하는 목적뿐만 아니라 개발자가 설정을 조정할 때 게임의 다른 측면을 고려하는 데 도움이 되는 문서 또는 포인터 역할을 할 수도 있습니다.

테스트를 독립 실행형 플레이어 빌드에서 실행하도록 전환하는 방법
테스트를 독립 실행형 플레이어 빌드에서 실행하도록 전환하는 방법
독립 실행형 플레이어에서 테스트 실행
자동화 및 CI

테스트 모음 빌드를 시작했으면 다음 단계는 빌드가 완료된 후 자동으로 실행하는 것입니다. 빌드 후 실행되는 자동화된 단위 및 통합 테스트는 회귀나 버그를 최대한 빨리 발견하는 데 유용합니다. 또한 클라우드에서 원격 자동 빌드 시스템의 일부로 실행할 수도 있습니다.

빌드 분할 및 실행

테스트 실행 결과를 더 많은 사용자와 공유할 수 있도록 사용자 지정 형식으로 캡처하고 싶을 때가 종종 있습니다. Unity 에디터 외부에서 테스트 결과를 캡처하려면 빌드 및 실행 프로세스를 분할해야 합니다.

테스트 프로젝트 폴더에 SetupPlaymodeTestPlayer라는 이름의 새 스크립트를 만듭니다.

SetupPlaymodeTestPlayer 클래스는 ITestPlayerBuildModifier 인터페이스를 구현합니다. 이를 사용하여 빌드의 플레이어 옵션을 수신하고 수정할 수 있는 ModifyOptions 메서드를 재정의하고 "후킹"합니다.

System.IO를 사용합니다;
using UnityEditor;
using UnityEditor.TestTools;

[어셈블리: TestPlayerBuildModifier(typeof(SetupPlaymodeTestPlayer))]
공용 클래스 SetupPlaymodeTestPlayer : ITestPlayerBuildModifier
{
public BuildPlayerOptions ModifyOptions(빌드플레이어옵션 플레이어옵션)
{
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;
}
}

이 커스텀 플레이어 빌드 수정자 스크립트는 플레이 모드에서 테스트가 실행될 때 다음을 수행합니다(실행 위치: 플레이어에서):

빌드된 플레이어의 자동 실행을 비활성화하고 실행 중인 호스트에 연결을 시도하는 플레이어 옵션을 건너뜁니다.

빌드 경로 위치를 프로젝트 내 전용 경로로 변경합니다(테스트플레이어).

이 작업이 완료되면 이제 빌드가 완료될 때마다 TestPlayers 폴더에 빌드가 위치할 것으로 예상할 수 있습니다. 이제 빌드 수정이 완료되고 빌드와 실행 간의 연결이 끊어집니다.

다음으로 결과 보고를 구현합니다. 이렇게 하면 테스트 결과를 사용자 지정 위치에 기록하여 자동화된 보고서 생성 및 게시를 준비할 수 있습니다.

테스트 프로젝트 폴더에 ResultSerializer라는 이름의 새 스크립트를 만듭니다(아래 제공). 이 클래스는 TestRunCallback에 대한 어셈블리 참조를 사용하고 ITestRunCallback 인터페이스를 구현합니다.

이 구현에는 테스트가 포함된 플레이어 빌드를 테스트 결과를 testresults.xml이라는 XML 파일에 기록하도록 설정하는 커스터마이징된 RunFinished 메서드가 포함되어 있습니다.

코드
결과 출력은 플랫폼의 Application.persistentDataPath 위치에 있는 testresults.xml 파일에서 확인할 수 있습니다.
빌드 및 실행 분할 후 테스트 실행

SetupPlaymodeTestPlayer.cs와 ResultSerializer.cs를 결합하면 이제 빌드 및 실행 프로세스가 분리됩니다. 테스트를 실행하면 플레이어 플랫폼의 Application.persistentDataPath 위치에 있는 testresults.xml에 결과가 출력됩니다.

이러한 후크 클래스에서 일부 유형을 사용하려면 Tests.asmdef에 추가 참조를 추가해야 합니다. 업데이트하여 UnityEditor.UI.EditorTests 어셈블리 정의 레퍼런스를 추가합니다.

이제 플레이어에서 테스트를 실행하면 프로젝트의 TestPlayers 폴더에 플레이어 빌드 출력이 생성되고 Application.persistentDataPath 위치에 testresults.xml 파일이 생성됩니다.

전자책 표지 아트
Unity에서 테스트에 대한 추가 리소스

Unity 테스트 프레임워크 과정

테스트 프레임워크 패키지에는 Unity를 사용한 테스트에 대해 자세히 알아볼 수 있는 샘플 실습이 포함된 테스트 과정이 포함되어 있습니다. 패키지 관리자를 사용하여 코스의 프로젝트 파일을 가져와야 합니다.

패키지 관리자 > 패키지 사용: Unity 레지스트리 > 테스트 프레임워크에서 샘플 드롭다운 목록을 찾아 코스 연습 문제를 임포트합니다.

연습 문제는 프로젝트로 가져와서 자산/샘플/테스트 프레임워크 아래에서 찾을 수 있습니다. 각 샘플에는 작업할 수 있는 연습 폴더와 함께 따라하면서 자신의 작업과 비교할 수 있는 솔루션이 포함되어 있습니다.

UTF로 코드 QA

유나이트 코펜하겐 강연에서는 UTF에 대해 더 자세히 설명하고 테스트 사용자 지정에 대한 몇 가지 흥미로운 사용 사례를 소개합니다. 그 밖에도 어떤 것이 가능한지 확인해 보세요.

Unity에서 디버깅하기

관련 문서를 통해 Unity의 디버깅 워크플로 속도를 높이세요:

- Microsoft Visual Studio 2022

- Microsoft Visual Studio Code

고급 기술 전자책

유니티는 전문 개발자가 게임 코드를 최적화하는 데 도움이 되는 다양한 고급 가이드를 제공합니다. C# 스타일 가이드를 만듭니다: 확장 가능한 깔끔한 코드 작성 에서는 업계 전문가들의 조언을 모아 팀이 깔끔하고 읽기 쉬우며 확장 가능한 코드베이스를 개발하는 데 도움이 되는 코드 스타일 가이드를 만드는 방법에 대해 설명합니다.

사용자들에게 인기 있는 또 다른 가이드는 다음과 같습니다. Unity로 생산성을 높이는 70가지 이상의 팁. 숙련된 개발자도 놓칠 수 있는 팁을 포함하여 Unity 2020 LTS로 일상적인 통합 워크플로를 개선할 수 있는 시간 절약 팁이 가득합니다.

기술 자료

최신 TestRunner API를 자세히 살펴보고, 다른 UTF 사용자 지정 속성에 대해 알아보고, UTF 문서를 통해 연결할 수 있는 추가 수명 주기를 알아보세요.

유니티의 모든 고급 전자책과 문서는 유니티 베스트 프랙티스 허브에서 확인할 수 있습니다.

이 콘텐츠가 마음에 드셨나요?