Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d HoloLens可以强制执行我的应用程序的单个实例吗?_Unity3d_Hololens - Fatal编程技术网

Unity3d HoloLens可以强制执行我的应用程序的单个实例吗?

Unity3d HoloLens可以强制执行我的应用程序的单个实例吗?,unity3d,hololens,Unity3d,Hololens,在MSFT HoloLens上打开Unity应用程序时,首先会创建一个空白的白色框,供用户通过手势进行定位和放置。用户放置此白色框后,应用程序启动。用户可以退出应用程序,但不一定要通过执行“bloom”手势来关闭它。应用程序将不会运行,前面提到的白色框应重新出现,表示运行和关闭之间的“暂停”状态 问题是,有时应用程序可能已退出,但此白色框不显示。如果没有白色框,则用户无法通过单击右上角的X来正常关闭应用程序。同样,如果应用程序已退出,而用户在返回下一个会话时不记得这一点,他们自然会再次尝试启动应

在MSFT HoloLens上打开Unity应用程序时,首先会创建一个空白的白色框,供用户通过手势进行定位和放置。用户放置此白色框后,应用程序启动。用户可以退出应用程序,但不一定要通过执行“bloom”手势来关闭它。应用程序将不会运行,前面提到的白色框应重新出现,表示运行和关闭之间的“暂停”状态

问题是,有时应用程序可能已退出,但此白色框不显示。如果没有白色框,则用户无法通过单击右上角的X来正常关闭应用程序。同样,如果应用程序已退出,而用户在返回下一个会话时不记得这一点,他们自然会再次尝试启动应用程序。如果上一个会话从未实际关闭,则可能会导致新打开的会话出现问题

我如何限制HoloLens打开我的Unity应用程序的第二个实例,前提是之前打开了一个会话,并且该会话保持运行或从未关闭

理想情况下,如果应用程序已经打开,当用户尝试打开应用程序时,HoloLens会刷新以前存在的实例,并将其带到用户视图中,或者在尝试打开新实例之前强制关闭以前的会话,以避免出现不希望出现的行为

通过在HoloLens上强制执行Unity应用程序的单个实例,这是处理此问题的最佳和最可靠的方法吗?或者检测实例是否已打开,并在再次尝试打开应用程序之前关闭该实例?哪一个是首选项,或者取决于首选项

我在这个主题上找到了一些外部资源: -我在这个话题上找到的最相关的信息来源。不幸的是,它没有涉及到如何做的应用程序是开放的肯定。 Windows应用商店应用-再次没有提到强制执行单个正在运行的实例 -不确定这是否适用于这种情况,但在退出应用程序之前,Unity会向所有游戏对象发送一个方法

在制品:

在“App.cs”内的Initialize方法中

    public virtual void Initialize(CoreApplicationView applicationView)


目前无法对此进行测试,因为Hololens将连接到一个网络,并且不会吐出任何internet,连接尝试了两个受保护/未受保护的网络。设备可能需要更新,但我们无法在没有网络连接的情况下检查更新。

为了澄清,这不是一个hololens特定的问题,您需要查看的是windows 10 sdk,在windows 8中它被称为墓碑,它是指在不关闭应用程序的情况下离开应用程序并能够继续的行为,下面是一篇关于在Windows10应用程序中维护状态的文章的链接,这里的讨论和解释太长,无法做到公正


你不应该试图阻止它,你需要拥抱它并处理它,因为你不能停止它在操作系统中的作用。你需要使用事件并保存数据,当系统唤醒时,你需要恢复你的状态。我想我要说的是,你不能阻止操作系统的默认行为,除非你自己重写它并让它做你想做的。我只是想给你指出正确的方向,因为我怀疑你会在这里得到一个能满足你的问题的答案。绝对可以,我会在答案中添加另一个链接,这也是一个应用程序生命周期链接,但它会解释如何实现你期望的目标的概念,它不会为您提供直接的do this修复,因为每个应用程序都是不同的,有不同的需求。是的,这是正确的,当您使用bloom时,您将应用程序置于挂起状态。正确的处理方法是保存应用程序所需的任何状态,然后在唤醒时调用它,而不是在启动时,这对于应用程序只发生一次事件。但这同样取决于您需要为您的应用程序做些什么请与我们联系。
    public virtual void Initialize(CoreApplicationView applicationView)
    CoreApplication.Resuming += App_Resuming;