Unity3D for Linuxで作成されたゲームには、データフォルダー.dll
にGameDataFolder/Managed
ファイルが含まれています。
Linuxが.so
ファイルの代わりに.dll
ファイルを使用すると思ったため、これは奇妙です。
(Android-Unity3Dアプリにも同じことが言えます。)
どうして?
あなたが話しているゲームは、.NET Frameworkに基づいており、Microsoftの.NET Frameworkの無料でオープンソースの実装であるMonoで実行されています。
これらのアプリケーションは.NETベースであるため、アセンブリの拡張子は.dllです。そのため、フォルダー内のDLLファイルを確認できます。
クロスプラットフォーム用に設計された1つの.NETプログラムは、MSILでコンパイルされ、.NET/Monoランタイムを実行する必要がある、同じ「バイナリ」(アセンブリでもあるDLLを含む)でWindows、Linux、またはMacで実行できます。 。
また、Ubuntuリポジトリで利用可能なMono Frameworkに基づいた無料のアプリケーション(ゲームだけでなく)もいくつかあることに注意してください。例:おてんば娘。
.dll
のGameDataFolder/Managed
ファイルは、Monoを内部的に使用するネイティブコードプログラムに属します。
.NET共通言語ランタイムまたはMonoで実行できるクロスプラットフォームの実行可能ファイルと共有ライブラリは、Windows固有ではない場合でも、それぞれ.exe
および.dll
のサフィックスが付けられていることがよくあります。 UbuntuのようなGNU/Linuxシステム、またはWindows以外のOSのプログラムで.dll
ファイルを見つけると、これが通常理由です。ほとんどの場合、Ubuntuシステムで.dll
を見つけます。 Golbothの答え で説明されています。 しかし、それはここで起こっていることとはまったく異なります。
nityゲームエンジン -と混同しないでください ほとんどのUbuntuリリースのデフォルトのグラフィカルインターフェイス-人気のある独自のクロスプラットフォームゲームエンジン。 このエンジンはnot.NET FrameworkまたはMono上で実行します 代わりに、 it Mono を埋め込みます。つまり、Monoはその上で実行されます。これは、開発者が、Unityエンジンの一部ではないゲームに必要なコードを作成する方法です。
一般に、Monoは、Microsoftの.NET CLRが通常使用されるのと同じ方法で使用され、完全な.NET/Monoプログラムを実行します。しかし、Monoは ネイティブコードアプリケーションに埋め込み可能 を含むように設計されています これらのアプリケーションをカスタマイズできるようにするため 。それはあなたが説明している状況で起こっていることです。表示されているファイルは、Monoまたは.NET CLRの上で直接実行されるプログラムに属していません。代わりに、Monoを埋め込むネイティブコードプログラムに属します。
ほとんどがC++で記述されているUnityゲームエンジンは、Monoの独自のインスタンスをホストします。Monoは、システムのパッケージマネージャーからインストールされたバージョン(存在する場合)を使用せず、異なる場合があります。この組み込みMonoランタイムは、目的ではないため、スタンドアロンの.NET/Monoプログラムの実行には使用できません。代わりに、エンジンのネイティブコード部分はそれを使用してCILコードを実行します。 (CILは Common Intermediate Language の正式名です。Microsoftが最初に開発したため、以前はMSILまたはMicrosoft Intermediate Languageと呼ばれていました。)Unityエンジンを使用するゲームを作成するプログラマーは通常、独自のコードを記述しますC#では、いくつかの他の言語がサポートされています。
UnityエンジンはWindowsにもMonoを埋め込みますFor niversal Windows Platform games --- and other platform --- use the Microsoft .NET Framework代わりにモノ。しかし、ほとんどのモバイルデバイスやゲームコンソール、UbuntuやWindowsなど、ほとんどのプラットフォーム上のUnityゲームの大部分はMonoを使用しています。一部のプラットフォームでは IL2CPP がMonoの代替として利用可能であり、一部のプラットフォームではIL2CPPのみがサポートされています。詳細については、 スクリプトの制限 を参照してください。
.dll
ファイルが表示されるその他の状況Ubuntuで.dll
ファイルが表示される可能性が高い2つの状況について説明しました。
.dll
sです。 .dll
フォルダー内のGameDataFolder/Managed
ファイルが何のためにあるのかは偶然ではありません。Ubuntuで.dll
ファイルが表示される可能性がある他の2つの合理的に一般的なケースがあります。
.dll
ファイルではなく.exe
ファイルを生成します。 .NET Coreランタイム(CoreCLRと呼ばれる)、およびnot通常の.NET FrameworkまたはMonoは、これらのファイルを実行します。 .NET CoreはMicrosoft製品ですが、標準の.NET Frameworkとは異なり、 。NET Coreはクロスプラットフォーム with 公式サポート UbuntuなどのGNU/Linuxシステムの場合- 無料のオープンソースソフトウェアです 。.dll
ファイルは、Windowsライブラリになる場合があります。これは、プログラムがUbuntuシステムに格納されているがWindowsで実行されている場合、またはUbuntuでWindowsドライブをマウントしている場合に表示されます。また、 Wine を使用してUbuntuで実行できるプログラムに関連して表示される場合があります。これには、Wineに付属するソフトウェアまたは winetricks
を使用して他のWindowsソフトウェア。これは、Ubuntuで.dll
に遭遇する可能性のあるすべての状況を網羅的にリストする試みではありません。 (たとえば、 OS/2ライブラリ でも構いません。)しかし、これらの4つのケースは最も一般的なケースだと思います。