このページでは、Unity Runtime Library を Windows とユニバーサル Windows プラットフォーム (UWP) に統合する方法を説明します。
この機能を使用して、3D/2D リアルタイムレンダリング、AR 体験、 3D モデルの相互作用、2D ミニゲームなどの Unity 搭載の機能をアプリケーションに埋め込むことができます。Unity Runtime Library は、 アプリケーション内でコンテンツをロード、アクティブ化、アンロードするタイミングと方法を管理するための制御へのアクセスを可能にします。
UWP XAML プロジェクト出力タイプを使用すると、Unity を組み込んだ UWP プロジェクトを簡単に作成できます。生成される Visual Studio プロジェクトは、一般的な XAML の UWP プロジェクトで、Unity プロジェクトをロードするための SwapChainPanel が設定されています。このプロジェクトを Unity 以外のアプリケーションのビジネスロジックで拡張したり、置き換えたりすることができます。
SwapchainPanel を使う際に、他の要素に重ねてレンダリングしたくなる場合があります。こうすると、Unity アプリケーション以外のコンテンツの上に、背景が透明な小さなオブジェクトをレンダリングすることができます。これを行うには、PlayerSettings.WSA-transparentSwapchain
オプションを有効にします。
Application.Unload
でプロセス中に Unity がロードされると、Unity エンジンをアンロードしてリソースを回収することができます。
Windows では、2 つの異なる方法で Unity をアプリケーションに埋め込むことができます。
最も簡単な方法は、アプリケーションから外部プロセスとして Unity を起動し、Unity の初期化とレンダリングを行うウィンドウを -parentHWND
コマンドライン引数 で指定することです。
2 つ目の方法は、既存のプロセスの中に Unity を埋め込むことです。これを行うには、Unity を UnityPlayer.dll
にビルドし、任意の Win32 アプリケーションで直接ロードできるようにします。エントリーポイントのシグネチャは以下の通りです。
extern "C" UNITY_API int UnityMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nShowCmd);
lpCmdLine
を使って、任意のコマンドライン引数を Unity に渡し、解像度、ジョブスレッド、親 HWND などを制御します。これにより、プロセス内で Unity を動かすことができます。Unity が表示されていないときは、Application.Unload
を使って、Unity が使うリソースを再要求することができます。
別のアプリケーションによってホストされている場合 、Unityはランタイムの ライフサイクルを制御しないため、すべてのシナリオで機能するわけではありません。既知の制限は以下のとおりです。
–