Unityで記述されたMicrosoft PixelSense用のゲームを作成しており、 SurfaceToTUIOブリッジとunity3d-tuio Unity プラグインを介してテーブルと通信しています。
私は現在、Microsoft PixelSense launcherでゲームをうまくプレイできるようにしようとしています。Surface Bing アプリケーションを模倣して、アプリケーションをランチャーに表示することができました - C:\ProgramData\Microsoft\Surface\v2.0\Programs の XML ファイルへのリンクを複製し、対応する XML を適切な場所に作成します。フォーマット。
専用の Surface ユーザー アカウントを使用するか、管理者のプロファイルの Surface Shell を使用して Surface モードにすると、XML で設定したカスタム アイコンを使用してランチャー バーにゲームが正しく表示されます。ゲームはバーから正しく起動し、約2 分間エラーなくプレイできます。
その時点で、ランチャーがゲームを閉じます。少し調査したところ、 Launcherを閉じるのはアプリケーションの責任であることがわかりました。
これは Microsoft PixelSense SDK の一部であり、Unity からアクセスできないため、これを回避するためにさまざまな方法を試しました。
- シングル アプリケーション モードでゲームを実行してみました。SignalApplicationLoadComplete呼び出しを待機する別のタイムアウトがあることがわかりました。
- RegistryでCriticalProcessMonitoring DisableおよびApplicationProcessMonitoring Disableキーを使用してみました。
- LoadingScreenTimeoutおよびSingleAppLoadingScreenTimeout レジストリ キーを 0に設定してみました - それらの有効なしきい値を下回っています。
私が望んでいるのは、Unity ゲームに出入りする最もスムーズなエクスペリエンスをユーザーに提供することです。現在、Windows デスクトップからゲームを起動する必要があります。これは、Windows が画面に触れている指と画面上にホバリングしている手のひらを区別できないため、ユーザーをイライラさせる可能性があります。
回避策、Unity から SignalApplicationLoadingCall をスプーフィングする方法をよく理解している人、または何か試してみることの提案はありますか?
ありがとう!
更新:うまくいかないことがいくつか見つかりました:
- C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.Surface\v4.0_2.0.0.0__31bf3856ad364e35 でMicrosoft.Surface DLLを見つけました。Unity プロジェクトにインポートしましたが、 Unity が現在サポートしていない.NET 4.0でDLL がコンパイルされているように見える System.TypeLoadException を受け取りました。
- DLL を必要とせずにランチャーと通信できるようにする COM オブジェクトを見つけることができませんでした。
- この投稿によると、System.Diagnostics.Process.Start は Surface モードでは機能しないため、 XNA ラッパー プログラムを使用できません。