このページでは、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はランタイムの ライフサイクルを制御しないため、すべてのシナリオで機能するわけではありません。既知の制限は以下のとおりです。
–
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.