플러그인 인스펙터(Plugin Inspector)
네이티브 플러그인(Native Plugins)

관리되는 플러그인(Managed Plugins)

일반적으로 스크립트는 프로젝트에 소스 파일로 유지되고 소스가 변경될 때마다 Unity 에 의해 컴파일됩니다. 그러나 외부 컴파일러를 활용하여 스크립트를 dynamically linked library(DLL)에 컴파일할 수도 있습니다. 결과로 얻은 DLL 은 프로젝트에 추가하고 노멀 스크립트와 마찬가지로 포함된 클래스를 오브젝트에 연결할 수 있습니다.

It is generally much easier to work with scripts than DLLs in Unity. However, you may have access to third party Mono code which is supplied in the form of a DLL. When developing your own code, you may be able to use compilers not supported by Unity by compiling the code to a DLL and adding it to your Unity project. You may also want to supply Unity code without the source (for example, for an Asset Store product) and a DLL is an easy way to do this.

DLL 생성

DLL 을 생성하려면 우선 적절한 컴파일러가 필요합니다. .NET 코드를 만드는 모든 컴파일러를 Unity 에서 사용할 수 있는 것은 아니기 때문에 중요한 작업에 착수하기 전에 컴파일러를 테스트해보는 것이 좋습니다. DLL 에 Unity API 에 의존하는 코드가 없으면 적절한 컴파일러 옵션을 사용하여 간단하게 DLL 로 컴파일할 수 있습니다. Unity API 를 사용하려면 Unity 자체 DLL 을 컴파일러에서 사용할 수 있도록 해야 합니다. Mac 의 경우에는 애플리케이션 번들에 포함되어 있습니다(컨텍스트 메뉴의 ‘패키지 콘텐츠 표시’ 커맨드를 사용하여 번들의 내부 구조를 볼 수 있습니다. Unity 애플리케이션을 마우스 오른쪽 클릭하거나 Ctrl 클릭해야 합니다).

Unity DLL 의 경로는 일반적으로

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

…이며 두 DLL 을 UnityEngine.dll 및 UnityEditor.dll 이라고 합니다.

Windows 에서 DLL 은 Unity 애플리케이션이 포함된 폴더에 있습니다. 경로는 일반적으로

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

…이며 DLL 의 이름은 Mac OS 의 경우와 동일합니다.

DLL 을 컴파일할 때의 정확한 옵션은 사용되는 컴파일러에 따라 다릅니다. 예를 들어 Mono C# 컴파일러인 mcs의 커맨드 라인은 Mac OS 에서 다음과 같습니다: -

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

여기서 -r 옵션은 빌드에 포함시켜야 하는 라이브러리 경로를 지정하며, 위에서는 UnityEngine 라이브러리입니다. -target 옵션은 어떤 빌드 타입이 필요한지 지정합니다. “library”라는 단어는 DLL 빌드를 선택하기 위해 사용되었습니다. 마지막으로 컴파일할 소스 파일의 이름은 ClassesForDLL.cs 입니다(이 파일은 현재 작업 폴더에 있다고 추정하지만 필요한 경우 전체 경로를 활용해 파일을 지정할 수도 있습니다). 여기까지 잘 따라왔다면 결과로 얻은 DLL 파일이 소스 폴더와 같은 위치에 나타납니다.

DLL 의 사용

컴파일 한 후에 DLL 파일은 다른 에셋과 마찬가지로 Unity 프로젝트에 드래그 앤 드롭할 수 있습니다. DLL 에셋은 폴드아웃 삼각형 표시가 있어 라이브러리 안에 별도의 클래스를 나타내는 데 사용할 수 있습니다. MonoBehaviour 에서 파생된 클래스는 일반적인 스크립트와 마찬가지로 게임 오브젝트에 드래그할 수 있습니다. 비 MonoBehaviour 클래스는 다른 스크립트에서 일반적인 방법으로 직접 사용할 수 있습니다.

폴드아웃 DLL에 클래스 이름이 표시되어있습니다
폴드아웃 DLL에 클래스 이름이 표시되어있습니다

Step by step guide for Visual Studio

This section explains how to build and integrate a simple DLL example with Visual Studio, and also how to prepare a debugging session for the DLL.

프로젝트(Project) 설정

First, open Visual Studio and create a new project. In Visual Studio, you should select File > New > Project and then choose Visual C# > Class Library.

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

  • Name은 네임스페이스입니다(이 예제에서는 “DLLTest”를 사용).
  • Location은 프로젝트의 부모 폴더입니다.
  • Solution name은 프로젝트의 폴더입니다.

Next, you should add references to the Unity DLLs. In Visual Studio, open the contextual menu for References in the Solution Explorer and choose Add Reference. Then, choose the option Browse > Browse > select file.

At this stage, you will have the option to select the required DLL file. On Mac OS X, the file path is:

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

On Windows, the path is:

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

코드(Code)

For this example, rename the class to MyUtilities in the Solution browser and replace its code with the following:

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 파일을 생성합니다.

Unity 에서 DLL 사용

For this example, create a new project in Unity and copy the built file <project folder>/bin/Debug/DLLTest.dll into the Assets folder. Then, create a C# script called “Test” in Assets, and replace its contents with the following code:

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

스크립트를 씬의 오브젝트에 연결하고 재생을 누르면 콘솔 창의 DLL 에서 코드의 결과물을 볼 수 있습니다.

Setting up a debugging session for the DLL

Firstly, you should prepare the debug symbols for the DLL. In Visual Studio, execute in the command prompt, passing <project folder>\bin\Debug\DLLTest.pdb as a parameter:

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

Then, copy the converted file <project folder>\bin\Debug\DLLTest.dll.mdb into Assets/Plugins.

설치가 완료되면 Unity 에서 일반적인 방식으로 DLL 을 활용해 코드를 디버깅할 수 있습니다. 스크립팅 툴 섹션에서 디버깅에 대해 자세하게 참조할 수 있습니다.

Compiling ‘unsafe’ C# code

You can enable support for compiling ‘unsafe’ C# code in Unity. To do this, go to Edit > Project Settings > Player and expand the Other Settings tab to reveal the Allow ‘unsafe’ Code checkbox.


  • 2018–03–20 일부 편집 리뷰를 거쳐 페이지 수정됨

  • MonoDevelop replaced by Visual Studio from 2018.1

  • ‘unsafe C# Code checkbox’ added in 2018.1

플러그인 인스펙터(Plugin Inspector)
네이티브 플러그인(Native Plugins)