Unity 관리되는 플러그인 만들기 가이드
개요
Unity의 관리되는 플러그인은 외부에서 생성하고 컴파일한 DLL(Dynamically Linked Library)로, .NET 어셈블리입니다. 이 문서는 관리되는 플러그인을 만들고 사용하는 방법에 대한 단계별 안내를 제공합니다.
관리되는 플러그인이란?
관리되는 플러그인은 Unity 프로젝트의 Assets 폴더에 저장되는 표준 C# 스크립트와는 다릅니다. 이 플러그인은 사전 컴파일되어 변경되지 않으며, Unity의 .NET 라이브러리 기능을 활용하여 코드를 통합합니다.
관리되는 플러그인 만들기
- 필요한 도구: Visual Studio, MsBuild, .NET SDK가 필요합니다.
- DLL 생성: Unity API 코드가 포함된 경우 Unity DLL을 컴파일러에 참조해야 합니다.
- Windows 경로:
C:\Program Files\Unity\Hub\Editor\<version-number>\Editor\Data\Managed\UnityEngine
- macOS 경로:
/Applications/Unity/Hub/Editor/<version-number>/Unity.app/Contents/Managed/UnityEngine
DLL 컴파일 예시
csc /r:/Applications/Unity/Hub/Editor/<version-number>/Unity.app/Contents/Managed/UnityEngine.dll /target:library /out:MyManagedAssembly.dll /recurse:*.cs
관리되는 플러그인 사용
DLL을 Unity 프로젝트에 추가한 후 할 수 있는 작업: - 클래스 확인 및 사용 - MonoBehaviour에서 파생된 클래스를 게임 오브젝트에 드래그 - 비 MonoBehaviour 클래스를 다른 스크립트에서 사용
Visual Studio로 DLL 만들기
- 새 프로젝트 생성: Visual Studio에서
File > New > Project
를 선택하고Class Library (.NET Standard)
를 선택합니다. - 정보 입력:
- Name: DLLTest
- Location: 프로젝트의 부모 폴더
- Solution name: 프로젝트의 폴더
- 필수 .dll 파일 추가: UnityEngine 폴더의 .dll 파일을 참조로 추가합니다.
- 코드 작성:
using System;
using UnityEngine;
namespace DLLTest {
public class MyUtilities {
public int c;
public void AddValues(int a, int b) {
c = a + b;
}
public static int GenerateRandom(int min, int max) {
System.Random rand = new System.Random();
return rand.Next(min, max);
}
}
}
Unity에서 DLL 디버깅
- Unity에서 새 프로젝트 생성 후 DLL 파일을 Assets 폴더에 복사합니다.
- Test C# 스크립트 작성 후 다음 내용을 추가합니다:
using UnityEngine;
using System.Collections;
using DLLTest;
public class Test : MonoBehaviour {
void Start () {
MyUtilities utils = new MyUtilities();
utils.AddValues(2, 3);
print("2 + 3 = " + utils.c);
}
void Update () {
print(MyUtilities.GenerateRandom(0, 100));
}
}
- 스크립트를 게임 오브젝트에 연결하고 Play 버튼을 클릭합니다.
안전하지 않은 C# 코드 컴파일
안전하지 않은 C# 코드는 메모리에 직접 접근할 수 있는 코드로, 기본적으로 비활성화되어 있습니다. 이 기능을 활성화하려면: - Edit > Project Settings > Player > Other Settings
에서 Allow Unsafe Code
를 활성화합니다.
결론
이 가이드는 Unity에서 관리되는 플러그인을 만드는 과정을 설명합니다. 다양한 활용이 가능하니 직접 시도해보세요!