テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

UnityのスクリプトをDLL化する

Asset Storeでは稀にDLLでスクリプトを提供しているアセットがある。
NGUIの無料版や無料体験版アセットのように、機能を全て把握されるとマズいアセットは概ねDLL化して内部スクリプトを隠蔽する手法をとっている。

これをしているアセットが不具合を起こした場合、対処できずに詰む場合もあるが、無料版アセットや低価格で提供しているアセットの場合は仕方がない所か。

で、先日行ったゲームジャムの飲み会にて、それに関する話題が上がったので、記事にしておこうと思う。



■UnityでDLLを作る
DLLを作る方法について。
参考URLはこちら

Using Mono DLLs in a Unity Project
http://docs.unity3d.com/Documentation/Manual/UsingDLL.html
MonoDevelop(Unity) での Unity 用 DLL作成方法(sehm@メモ3軒目)
http://sehm.blog48.fc2.com/blog-entry-153.html

1.ソリューションの作成
  MonoDevelopの[File]>[New]>[Solution]を選択
  作るソリューションはC#もしくはJS?JSにライブラリの項目無かった)のLibrary

スクリーンショット 2012-11-07 7.19.36

スクリーンショット 2012-11-07 7.20.08

2.UnityEngine.DLLを取得してインポート
  Unityの機能を使用するスクリプトだとUnityEngineが必要なので導入。
  UnityEngineを使わない場合はスルー可。
  ファイルの場所は多分こにあるので、デスクトップ辺りに移動しておく。

  Mac
   /Applications/Unity/Unity.app/Contents/Frameworks/Managed/
  Windows
   C:\Program Files (x86)\Unity\Editor\Data\Managed

  次に参照リストにUnityEngine.dllを追加する。
  [References]を右クリック>[Edit References]>[.Net Assembly]を選択し
  デスクトップ辺りにあるであろう[UnityEngine.dll]を選択して[Add]
スクリーンショット 2012-11-07 7.24.12

インポートに成功するとこんな感じになる。
スクリーンショット 2012-11-07 7.41.53

3.DLL化するスクリプトをインポート

  [プロジェクト]を右クリック>[Add]>[Add Files...]を選択。
  ダイアログが開くので、インポートしたいファイルを全部選択。
  登録方法はAdd a link to the file

スクリーンショット 2012-11-07 7.45.53

4.ビルドしてDLLを作成
  ビルドすると、下のパスにdllが出来る。
  ソリューション/bin/ReleaseもしくはDebug



■UnityでDLLを読む
作ったDLLは、UnityはAssetフォルダ以下にmono DLL(以降DLL)を置けば勝手にインポートして読んでくれて、使用することができる。ただWindowsは3.5まで使えるっぽいが、それ以外で使用出来る機能は.NET2以前に限定されるので注意。

スクリーンショット 2012-11-07 7.06.32