MSFT HoloLensでUnityアプリケーションを開くと、最初に空白の白いボックスが作成され、ユーザーがジェスチャーを介して配置して配置します。ユーザーがこの白いボックスを配置すると、アプリケーションが起動します。ユーザーは、「開花」ジェスチャーを実行することによって、アプリを終了することができます(必ずしも閉じる必要はありません)。アプリは実行されず、前述の白いボックスが再び表示されるはずです(この「一時停止」状態を実行中と終了時の間で示すために)。HoloLensは自分のアプリケーションのインスタンスを1つ強制できますか?
問題がアプリを終了していて、この白いボックスが表示されないことがあります。白いボックスが存在しない場合、ユーザーはアプリケーションを正常に閉じることができません(右上のXをクリックします)。同様に、アプリが終了し、次のセッションに戻るときにユーザーがこれを覚えていない場合、自然にアプリケーションを再起動しようとします。前のセッションが実際に閉じられていない場合は、新しく開かれたセッションで問題が発生する可能性があります。
セッションが以前に開かれていて、実行されているか、決して閉じられていない場合、HoloLensがUnityアプリケーションの2番目のインスタンスを開くのを制限するにはどうすればよいですか?
アプリケーションが既に開かれている場合、ユーザーがアプリケーションを開こうとすると、HoloLensは以前のインスタンスを更新してユーザービューに表示するか、以前のセッションを強制的に閉じてから新しいインスタンスを開きます。望ましくない動作を避ける)。
HoloLensでUnityアプリケーションの1つのインスタンスを強制することでこれを処理する最も信頼性の高い方法はありますか?または、インスタンスが開いているかどうかを検出してそのインスタンスを閉じてから、再度アプリケーションを開くことができますか?どちらか一方が優先されるか、どちらかが優先されるのはどちらですか?
外部リソース私がこのトピック(多くのうちのいくつか)で見つけたもの:
How to determine if app is running on HoloLens - 私がこのトピックで見つけた最も関連性の高い情報源残念ながら、アプリが公開されていることを確認することはできません。 Unity Script Reference - WSA(Windows Storeアプリ) - 実行中のインスタンスが1つだけ実行されることについてもう一度言及しません。
Unity Script Reference - OnApplicationQuit - この状況に該当するかどうかは不明ですが、Unityがアプリケーションを終了する前にすべてのゲームオブジェクトに送信する方法があります。
WIP:initializeメソッドで
private void App_Resuming(Object sender, Object e)
{
if (UnityEngine.VR.VRSettings.loadedDeviceName.Equals("HoloLens"))
{
UnityEngine.VR.VRDevice.SetTrackingSpaceType(UnityEngine.VR.TrackingSpaceType.Stationary);
UnityEngine.VR.InputTracking.Recenter();
UnityEngine.VR.VRDevice.SetTrackingSpaceType(UnityEngine.VR.TrackingSpaceType.RoomScale);
}
}
( 'App.cs' の内側)
public virtual void Initialize(CoreApplicationView applicationView)
CoreApplication.Resuming += App_Resuming;
のように、現時点ではこれをテストすることはできません追加Hololensはネットワークに接続し、 "No internet、connected"(保護された/保護されていないネットワークの両方を試しました)を吐き出します。デバイスにはアップデートが必要な場合もありますが、ネットワークに接続していない場合はアップデートを確認できません。
あなたは、あなたが操作システムのその一部を停止することはできませんので、それを受け入れ、それを処理する必要があり、それを防ぐためにしようとすべきではありません。イベントを使用してデータを保存する必要があります。システムが起動すると、状態を回復する必要があります。 –
私が言っていることは、OSのデフォルトの動作を妨げることができないということです。自分でそれをオーバーライドし、あなたが望むことを行わない限り。私はちょうど正しい方向にあなたを指し示そうとしています。あなたの質問を満足させる答えをここで得ることができないと思うからです。 –
絶対にあなたは答に別のリンクを追加します。それはアプリケーションのライフサイクルリンクです。あなたが探しているものを達成する方法のコンセプトを説明してください。これは、すべてのアプリケーションが異なっているため、異なるニーズを持っているため、この修正を直接行うことはありません。 –