読者です 読者をやめる 読者になる 読者になる

組み込み備忘録

元組み込みエンジニアで現在某大学のM1在籍中です.研究の備忘録的なブログにしようと思います

Unity専用クラスライブラリを生成するツールを作りました。【UnityDLLCreater】

概要

タイトル通りですが、C#のソースファイルからUnity用のクラスライブラリを生成するツールを作成しました。

f:id:simoneFX:20170506113435p:plain
 

ダウンロード:http://yahoo.jp/box/OWUlCD

GitHubhttps://github.com/hiroyuki405/UnityDLLCreater

 

DLLについて

Unityに限ったことではないですが、プログラムが肥大化するとビルドに時間がかかり、開発効率が低下します。そこで、事前にいくつのソースファイルをDLLとして生成することで、ビルド時間を短縮し、開発効率を向上させることができます。

また、頻繁に使用する関数などは1つのDLLにモジュールとしてまとめることで、開発のたびに車輪の再発明をしなくて済みます。

 

使い方

①ソースファイルを作成する。

ライブラリ化するソースファイルを作成します。例として以下のような引数として与えられた文字列に現在時刻を挿入するプログラムを作成します。

f:id:simoneFX:20170506121021p:plain

 

②UnityDLLCreater.exeを実行する。

今回作成したツールが「UnityDLLCreater」です。現状Windows環境でしか動きません(Macの方すみません)

初回起動時にUnityがインストールされているフォルダが聞かれますので、Unityのフォルダを指定してください(初期設定であればPrograms Filesに入ってると思います)

 

f:id:simoneFX:20170506120325p:plain
f:id:simoneFX:20170506120349p:plain
 

 ちなみにこの設定は初回起動時のみで、以降表示されません。

③変換するスクリプトと出力先を指定する。

正しくフォルダが指定されるとウィンドウが立ち上がり、「smcs.bat」、「UnityEngine.dll」、「UnityEditor.dll」の3つに「Succes」が表示されます。

この状態で「変換元スクリプト」と「出力先」を指定します。今回は「testlib.dll」というDLLを生成します。

※変換元スクリプトは"*.cs"ファイルが存在するディレクトリを指定してください。

 

指定が完了したら「DLL生成」をクリックしてください。ビルド:Succesが表示されていれば無事にDLLが生成されています。「出力先」をクリックしてDLLの出力先フォルダを開きます。

 

f:id:simoneFX:20170506120635p:plain

 

④出力したDLLをアセットフォルダに入れる。

生成されたDLL(testlib.dll)はアセットフォルダ配下にコピーすることで、使用できるようになります。ちなみにUnityではアセットフォルダ配下にあるdllは自動で参照設定が行われるため、コピーするだけで使用可能な状態になります。この状態で今回作成したtestlib.dllが使える状態になります。

以下、クラスライブラリを使用して”本日は晴天なり”という文字列の先頭に現在時刻を挿入するスクリプト

 

f:id:simoneFX:20170506121613p:plain

 

 今回作成したtestlib.dllはnamespaceを使用しているため、上記のように使用したい場合はソースファイルの先頭にnamespace(今回であれば"using TestLib")を追記してください。

 

トラブルシューティング

No1.必須ファイルに「Not Found」が表示されてビルドができない。

Unityフォルダが正しく設定されていない場合に表示されます。この場合は再検索ボタンをクリックして再度Unityフォルダを指定してください。

f:id:simoneFX:20170506122951p:plain

 

No2.別VerのUnityで使用できるDLLを作成したい

「再検索」をクリックして作成したいバージョンのUnityが保存されてるフォルダを選択して再度「DLL生成」をクリックしてください。バージョンの差異が近ければバージョン事にDLLを作り直す必要はないかも。未検証です。

 

No3.ビルドができない。

ビルドができない場合は以下が考えられます。

  1. ソースファイルの記述そのものに誤りがある。
  2. 必須ファイルが正しく設定されていない(Not Foundになっている)
  3. 変換元スクリプトで指定しているディレクトリに*.csファイルが存在しない。

等です。ビルドした際のログを出力するようにしているので、ログの内容も確認してみてください。

 

 

そのほか、何かありましたら遠慮なく連絡してください。

twitter.com