Plugin Inspector
네이티브 플러그인

Managed Plugins

일반적으로 스크립트는 프로젝트에 소스 파일로 유지되고, 소스가 변경될 때 Unity 의해 컴파일됩니다. 그러나 외부 컴파일러를 사용하여 스크립트를 동적 링크 라이브러리 (DLL)로 컴파일할 수도 있습니다. 결과 DLL은 프로젝트에 추가하여 거기에 포함되는 클래스는 보통의 스크립트와 마찬가지로 오브젝트에 연결할 수 있습니다.

일반적으로 DLL보다 스크립트 작업을 하는 편이 간단합니다. 그러나 DLL 형식으로 제공되는 타사 Mono 코드를 사용해야만 하는 경우가 있습니다. 자신의 코드를 개발할 때, Unity에서 지원되지 않는 컴파일러를 사용할 수 있는 경우가 있으며(예를 들어 F#), 코드를 DLL로 컴파일하여 Unity 프로젝트에 추가할 수 있습니다. 또한 소스 코드를 제공하지 않고 Unity 코드를 제공하고 싶은 경우가 있고(예를 들면 Asset Store 제품 등), 그 경우 DLL은 이를 실현하는 간단한 방법입니다.

DLL의 작성

DLL을 만들려면 먼저 적절한 컴파일러가 필요합니다. .NET 코드를 생성하는 모든 컴파일러는 Unity에서 동작하는 것이 보증되지 않기 때문에 대량 작업에 착수하기 전에 컴파일러를 어떤 코드에서 테스트하는 것이 좋습니다. 만약 DLL이 Unity API에 의존하는 코드가 아무것도 없는 경우, 적절한 컴파일러 옵션을 사용하여 간단하게 DLL로 할 수 있습니다. 만약 Unity API를 사용하려면, Unity 자신의 DLL을 컴파일러에서 사용 가능하게 해야 합니다. Mac에서는 이러한 응용 프로그램 번들에 포함되어 있습니다(컨텍스트 메뉴에서 Show Package Contents 명령을 사용하여 번들의 내부 구조를 볼 수 있습니다. Unity 응용 프로그램을 마우스 오른쪽 단추 또는 Ctrl 키를 누른 채 클릭합니다):-

Unity DLL의 경로는 일반적으로,

/Applications/Unity/Unity.app/Contents/Frameworks/Managed/

Windows에서 DLL은 Unity 응용 프로그램에 따라온 폴더에 있습니다. 경로는 보통

C:\Program Files\Unity\Editor\Data\Managed

DLL을 컴파일 할 때의 정확한 옵션은 사용되는 컴파일러에 따라 달라집니다. 예를 들어 Mono C# 컴파일러, 즉 mcs,의 명령줄은 Mac OS에서 다음과 같이 보입니다 : -

mcs -r:/Applications/Unity/Unity.app/Contents/Frameworks/Managed/UnityEngine.dll -target:library ClassesForDLL.cs 

DLL의 사용

한번 컴파일된 후 DLL은 다른 모든 에셋과 마찬가지로 Unity 프로젝트에 드래그 앤 드롭할 수 있습니다. DLL 에셋은 축소된 삼각형 표시가 라이브러리에 있는 다른 클래스를 공개합니다. MonoBehaviour에서 얻을 수 있는 클래스는 일반적인 스크립트와 마찬가지로 게임 오브젝트에 드래그 앤 드롭 할 수 있습니다. 비 MonoBehaviour 클래스는 다른 스크립트에서 일반적인 방법으로 직접 사용할 수 있습니다.

클래스 이름이 표시되어 있는, 전개된 DLL
클래스 이름이 표시되어 있는, 전개된 DLL

MonoDevelop 및 Visual Studio 단계별 가이드

이 섹션에서는 간단한 DLL에서의 샘플을 빌드하여 .NET 라이브러리를 생성하는 주요 IDE인 MonoDevelop 및 Visual Studio와 통합하는 방법을 배웁니다. 이 섹션에서는 또한 DLL 디버깅 세션을 준비하는 방법도 설명합니다.

프로젝트 설정

먼저 Monodevelop 또는 Visual Studio에서 새 프로젝트를 만듭니다. Monodevelop에서는 File > New > Solution에서 C# > Library를 선택하고, Visual Studio에서는 File > New > Project에서 Visual C# > Class Library를 선택합니다.

새 라이브러리 정보를 입력합니다 :

  • Name 은 이름 공간이며, 이 샘플에서는 “DLLTest”를 사용합니다.
  • Location 은 프로젝트의 부모 폴더입니다.
  • Solution name 은 프로젝트 폴더입니다.

다음으로, Unity DLL의 참조를 추가해야 합니다. Monodevelop은 솔루션 브라우저에서 컨텍스트 메뉴 를 열고(오른쪽 클릭) Edit References를 선택하여 .Net Assembly tab > File System > select file 옵션을 선택합니다. Visual Studio에서는 솔루션 익스플로러에서 컨텍스트 메뉴를 열고(오른쪽 클릭) Add Reference 를 선택하고 Browse > Browse > select file 옵션을 선택합니다.

At this stage, you will have the option to select the required DLL file. On Mac OSX, the file can be found at

    Applications/Unity.app/Contents/Frameworks/Managed/UnityEngine.dll


    Program Files\Unity\Editor\Data\Managed\UnityEngine.dll

이 샘플에서는 솔루션 브라우저에서 클래스 이름을 “MyUtilities”로 이름을 바꾼 후, 다음 코드로 대체합니다 :

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);
        }
    }
}

마지막으로 프로젝트를 빌드하여 DLL 파일 및 디버그 심볼을 생성합니다.

DLL을 Unity에서 사용하기

이 샘플에서는 <project folder>/bin/Debug/DLLTest.dll로 만든 것을 Unity 프로젝트에 복사하고 C# 스크립트로서 “Test”를 Assets 폴더에 만들고 다음 코드로 대체합니다 :

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));
     }
}

마지막으로 스크립트를 씬의 오브젝트에 연결하여(즉 Main Camera) 씬을 실행합니다. 출력 결과는 Console 창에서 볼 수 있습니다.

DLL의 디버깅 세션 설정

Firstly, you should prepare the debug symbols for the DLL. In MonoDevelop, copy the built file <project folder>/bin/Debug/DLLTest.dll.mdb into the Assets/Plugins folder. In Visual Studio, execute

Program Files\Unity\Editor\Data\Mono\lib\mono\2.0\pdb2mdb.exe

Next, open the “Test” script in MonoDevelop. Make sure the Unity debugger is enabled from the Tools menu (Windows) or MonoDevelop-Unity menu (MacOS). The option you need from this menu is Add-in Manager > Installed tab > Unity > select Mono Soft Debugger Support for Unity > Enable.

With this setup completed, you can debug code that uses the DLL in Unity in the usual way. See the Scripting Tools section for further information about debugging. …이며, 두 DLL은 UnityEngine.dll 및 UnityEditor.dll라고 이름이 붙어 있습니다. …이고, DLL 파일 이름은 Mac OS 용과 동일합니다. 여기서 -r 옵션은 빌드에 포함시켜야 하는 라이브러리 경로를 지정하고, 이 경우 UnityEngine 라이브러리입니다. -target 옵션은 어떤 빌드가 필요한지 지정하고, “library”라는 문자열은 DLL 빌드를 선택하기 위해 사용되고 있습니다. 마지막으로 컴파일할 소스 파일은 ClassesForDLL.cs 입니다(이 파일이 현재 작업 폴더에 있는 것이 전제이지만, 필요하다면 파일을 전체 경로를 지정할 수 있습니다). 모든 것이 잘 된다는 전제에서, 결과 DLL 파일은 소스 폴더와 같은 위치에 표시됩니다. …while on Windows, the path is

Code

in the command prompt, passing <project folder>\bin\Debug\DLLTest.pdb as a parameter. Then, copy the converted file <project folder>\bin\Debug\DLLTest.dll.mdb into Assets/Plugins.

Plugin Inspector
네이티브 플러그인