소스 제너레이터 생성 및 사용
Create a simple source generator and configure the Unity Editor to use it for your Unity project code.
읽는 시간 2분최근 업데이트: 한 달 전
스크립트 컴파일 프로세스의 추가 단계로 소스 제너레이터를 사용하여 기존 코드를 컴파일하는 동안 새 코드를 추가할 수 있습니다. 코드 분석기와 마찬가지로 기존 소스 제너레이터를 사용하거나 직접 생성할 수 있습니다.
참고: Unity는 네임스페이스의 6.0.0 프리뷰 버전만 지원합니다. 애플리케이션에서 이 네임스페이스를 사용하려면 버전을 사용해야 합니다. 에 대한 자세한 내용은 Microsoft의 System.Text.Json 네임스페이스 기술 자료를 참조하십시오.
System.Text.Json6.0.0-previewSystem.Text.JsonVisual Studio에서 소스 제너레이터를 생성한 후 Unity 프로젝트에서 사용할 수 있도록 적용하는 방법은 다음과 같습니다.
-
Visual Studio에서 .NET Standard 2.0을 타게팅하는 C# 클래스 라이브러리 프로젝트를 생성하고 프로젝트의 이름을로 지정합니다.
ExampleSourceGenerator -
프로젝트에NuGet 패키지를 설치합니다. Unity로 작업하려면 소스 제너레이터가 Microsoft.CodeAnalysis.Csharp 4.3을 사용해야 합니다.
Microsoft.CodeAnalysis.Csharp -
Visual Studio 프로젝트에서 새 C# 파일을 만들고 다음 코드를 추가합니다.using Microsoft.CodeAnalysis;using Microsoft.CodeAnalysis.Text;using System.Text;namespace ExampleSourceGenerator{ [Generator] public class ExampleSourceGenerator : ISourceGenerator { public void Execute(GeneratorExecutionContext context) { System.Console.WriteLine(System.DateTime.Now.ToString()); var sourceBuilder = new StringBuilder( @" using System; namespace ExampleSourceGenerated { public static class ExampleSourceGenerated { public static string GetTestText() { return ""This is from source generator "); sourceBuilder.Append(System.DateTime.Now.ToString()); sourceBuilder.Append( @"""; } }}"); context.AddSource("exampleSourceGenerator", SourceText.From(sourceBuilder.ToString(), Encoding.UTF8)); } public void Initialize(GeneratorInitializationContext context) { } }}
-
릴리스할 소스 제너레이터를 빌드합니다. 이렇게 하려면 Build로 이동하여 Batch Build 옵션을 선택한 후 Release 옵션과 Build를 선택합니다.
-
소스 제너레이터의 프로젝트 폴더에서파일을 찾습니다.
bin/Release/netstandard2.0/ExampleSourceGenerator.dll -
이 파일을 Unity 프로젝트의 Assets 폴더에 복사합니다.
-
에셋 브라우저 내에서 .dll 파일을 클릭하여 Plugin Inspector 창을 엽니다.
-
Select platforms for plugin에서 Any Platform을 비활성화합니다.
-
Include Platforms에서 Editor 및 Standalone을 비활성화합니다.
-
Asset Labels에서 레이블 아이콘을 클릭하여 에셋 레이블 하위 메뉴를 엽니다.
-
RoslynAnalyzer라는 새 레이블을 생성하고 할당합니다. 이 작업을 수행하려면 Asset labels 하위 메뉴의 텍스트 입력 필드에를 입력하고 Enter 키를 누릅니다. 이 레이블은 정확히 일치해야 하며 대소문자를 구분합니다. 레이블이 생성되면 그때부터 에셋 레이블 하위 메뉴에 표시됩니다. 메뉴에서 레이블 이름을 클릭하여 다른 분석기에 할당할 수 있습니다.
RoslynAnalyzer -
이 소스 제너레이터가 둘 이상의 어셈블리에 삽입되므로 콘솔에 경고가 출력됩니다. 해결 방법은 위의 예시의를 내부로 만들거나 이름 자체를 생성하는 것입니다.
ExampleSourceGenerated -
소스 제너레이터가 작동하는지 테스트하려면 다음 코드를 사용하여 에디터에서 새 MonoBehaviour 스크립트를 생성합니다.using UnityEngine;public class HelloFromSourceGenerator : MonoBehaviour{ static string GetStringFromSourceGenerator() { return ExampleSourceGenerated.ExampleSourceGenerated.GetTestText(); } // Start is called before the first frame update void Start() { var output = "Test"; output = GetStringFromSourceGenerator(); Debug.Log(output); }}
-
이 스크립트를 씬의 게임 오브젝트에 연결하고 플레이 모드를 시작합니다. 소스 제너레이터의 메시지가 시간 스탬프를 비롯하여 콘솔 창에 표시됩니다. 이 소스 제너레이터가 둘 이상의 어셈블리에 삽입되므로 콘솔에도 경고가 표시됩니다. 해결 방법은 위의 예시의를 내부로 만들거나 이름 자체를 생성하는 것입니다.
ExampleSourceGenerated
소스 제너레이터에 대한 자세한 내용은 Microsoft의 소스 제너레이터 기술 자료를 참조하십시오.