LoginSignup
7
7

More than 5 years have passed since last update.

UnityのAssetをVisualStudioでDLL化して使う

Last updated at Posted at 2015-08-28

初めに

  • ソースコード方式で提供されているAssetがあります。
    これは便利なのですが、いろいろな理由によりDLLにしたくなった場合の手順が
    Mono前提だったり、Export考慮が漏れていたりしたので改めてまとめました。

前提

  • Unity5.1.1p4 / VisualStudio2013 で DLL 化した時の手順です。
  • 各種Asset毎の固有事情もあるので先に各Asset固有の手順に目を通してみてください。

手順

ソリューションを出力する

  1. 対象のAssetのみのUnityプロジェクトを作成する
    • 今回対象のUniRxの場合はgithubからソースを落とした状態です。
  2. UnityVS2015が入っているので、2013に入れ替える ( VS2015を使用している人はスキップしてください )
    1. Visual Studio 2015 Tools for Unity extension をインストールする
      • VS2015がインストールされていなくてもインストールは可能
    2. UnityVS(VS2015用)を削除
    3. UnityVS(VS2013用)を追加
      • Assets - Import Package - Visual Studio 2013 Tools で簡単に追加可能
  3. Examples など不要なファイルを消す
  4. Editor ディレクトリを削除していく
    • 後述
  5. Generate Project Files

DLLを出力する

  1. プロジェクトのプロパティから出力ファイル名を変更する
    • Application - Assembly name が Assembly-CSharp になっているので任意の名前に変更
    • Editorの方も同様に変更
  2. Release に設定 ( これは好みかも? )
  3. ビルドする

プロジェクトにDLLをコピーする

  1. DLLが出力されていることを確認する
    • デフォルト設定だと Temp\UnityVS_bin\Release\
  2. DLLを導入したいプロジェクトの任意のディレクトリ(Assets以下)にコピーする
    • 依存するdllも同ディレクトリにコピーされているので必要なもののみコピーしてくる
  3. UnityをRefresh(デフォルトだとフォーカスすれば自動でRefresh)

各Asset固有の手順

UniRx

  • #if UNITY_EDITOR 対策 (未検証)
    • UniRx/DllsにあるプロジェクトでDLLを生成するらしい。
      • @neuecc さんご指摘ありがとうございます。

手順

  1. UnityでUniRxレポジトリのRootディレクトリを開く
    • Library/UnityAssemblies/*.dll をUnityに持ってきてもらう
  2. UnityVS.UniRx.sln を開く
    • 少なくともVS2013の場合は以下の対応が必要
      1. NuGetManagerを開いてRestoreする
      2. UniRx.TestsにLibrary/UnityAssemblies/UnityEngine.dllへの参照を追加する
  3. ビルドする
  4. Dlls/UniRx.Library.Unity/bin/Debug/ にUniRx.dllとUniRx.Unity.dllが出力されているので使う(未検証)
    • Releaseビルドだといろいろ参照が足りないって怒られるのでUnityEngine.dllなどを追加する(未検証)

UnityTestTools

  • NUnit系のDLLを忘れずにコピーする
    • UnitTesting/Editor/NUnit/Libs/*.dll
    • UnitTesting/NSubstitute/*.dll
  • 画像系ファイルがパス指定で読み込まれているようなので、そのままコピー
    • Common/Editor/icons/*.png
    • IntegrationTestsFramework/TestingAssets/*.prefab
    • IntegrationTestsFramework/TestingAssets/*.png
    • IntegrationTestsFramework/TestingAssets/Materials/*.mat

課題

  • そもそもそこまでする必要ない可能性が浮上(未確認)
    • Library/ScriptAssemblies/ にあるAssembly-CSharp*.dllをリネームして使うだけでも十分かもしれない。
7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7