プログラムの素

スマートフォンアプリ開発に携わっているペーペープログラマのブログです

【Unity5】UnityスクリプトをDLLファイル化する方法

別にUnity5に限った話じゃないですが、Unityで作成したプロジェクトを外部の人に渡す必要がありその時にスクリプトを見せたくなかったので隠蔽する方法を検索しました。

どうやらUnityのスクリプトはDLL化できるみたいでしたのでその方法をメモ。

参考にさせていただいたサイトはこちらです。

Unityで、自作Assetをdllファイルにコンパイルする - Qiita

公式のサイト(日本語)はこちら。

Unity - マニュアル: Unity Project での Mono DLL 使用

Unityのスクリプトコンパイルするために、専用のコンパイラが提供されています。

Macの場合だと

/Applications/Unity/Unity.app/Contents/Frameworks/Mono/bin/smcs

Windowsの場合だと

C:¥Program Files¥Unity¥Editor¥Data¥Mono¥bin¥smcs.bat

にあるシェルスクリプト、バッチファイルでコンパイルを行う事ができます。

記述例は以下のような感じです。

/Applications/Unity/Unity.app/Contents/Frameworks/Mono/bin/smcs -r:/Applications/Unity/Unity.app/Contents/Frameworks/Managed/UnityEngine.dll -r:/Applications/Unity/Unity.app/Contents/Frameworks/Managed/UnityEditor.dll -target:library -out:hoge.dll *.cs 
C:¥Program Files¥Unity¥Editor¥Data¥Mono¥bin¥smcs.bat -r:"C:¥Program Files¥Unity¥Editor¥Data¥Managed¥UnityEngine.dll" -r:"C:¥Program Files¥Unity¥Editor¥Data¥Managed¥UnityEditor.dll" -target:library -out:hoge.dll *.cs

引数やオプションについては以下の意味があります。

  • -r
    • ビルドに含めるライブラリのパス
      上記の例ではUnityEngine.dllとUnityEditor.dllを設定しています
  • -target
    • ビルドの種別
      libraryと指定するとDLLビルドを行う
  • -output
    • 出力されるファイル名
  • ソースファイル
    • 最後にコンパイルするソースファイルを指定する
      上記の例ではカレントディレクトリにあるC#ソースファイルを全てコンパイル

オプションについては

smcs -help

で見る事ができるので、出力された説明を参考にしてみてください。