2017-02-26 3 views
0

Unity 5ゲームのDLLプラグインのオブジェクトとクラスを公開したいと思います。同じゲームで実行時に読み込まれるDLLにユニティゲームのクラスを公開しますか?

プラグイン(DLL/.NETアセンブリ)は、後で実行時に読み込まれます。しかし、これらのDLLは、メインゲームによってすでに作成されたクラスやオブジェクトにアクセスする必要があります。

は、私は、プラグインDLLをロードするためにAssembly.LoadFrom()メソッドを使用します。C++のようにC#で任意のヘッダファイルがあるようには思えないのでUse assembly class without the assembly object

、どのように私は公開しないゲームプログラムのファイル(.exe )クラスをプラグインに追加しますか?

答えて

1

リファレンスUnityEngine.dllとあなたの組立-CSharp.dll

ユニティエディタはC#のコードをコンパイルするたびに、それはほとんどの場合、1つのDLL(あなたがたとえば、UnityScriptを使用している場合、それはより多くを生成)を生成 - そのDLLをAssembly-CSharp.dllと呼ばれ、エディタ内のプロジェクトファイルのLibrary/ScriptAssembliesフォルダに格納されます。

他のDLLと同じように、参照する必要があります。 Unity APIを使用するため、UnityEngine.dllも参照する必要があります。例えば、c:/Program Files/Unity/Editor/Data/PlaybackEngines/androidplayer/Managed/UnityEngine.dll

ほとんどのプラットフォームでUnityEngine.dllは同じですこれはAndroidビルドにコンパイルされます)、どちらを使用するかはあまり関係ありませんが、にターゲットプラットフォームとして使用する必要があります。

プラットフォームこれは、サイドノートとして

のために働くDLLの読み込みは、さまざまなプラットフォームで動作しないことに注意していない - 彼らは実行されませんので(iOSとWebGLのようなよく知られた例.NET IL)ビルド後

あなたはビルドが行われた後、あなたが正しいDLLを参照することを確認したいと思う

行われています。たとえば、Windowsスタンドアローンでは、内蔵の*-Dataフォルダ内で簡単に再度見つけることができます。アンドロイドでは、それもAPKから抽出することができます。概要一般的に

、あなたがゲームをビルドするとき、あなたは(最新Assembly-CSharp.dllを参照)あなたのDLLを再コンパイルする必要があります。

補足として、コードベース全体をDLLにプリコンパイルしてプロジェクトで使用することもできますが、これにより#preprocessor directivesが中断されるため、プラットフォームを交換するときに再構築する必要があります。しかし、少なくともあなたはそのDLLがいつ再構築するか(そしてその結果、参照する必要があるとき)を完全に制御することができます。

関連する問題