如何在HoloLens 2的Unity应用中实现多网页标签打开功能?
问题根因
Unity的Application.OpenURL在HoloLens 2(UWP平台)上连续同步调用时,会被系统的浏览器启动逻辑判定为重复请求,仅保留最后一次调用的页面加载,不会生成多个标签页。
可行解决方案
方案1:协程延迟调用(改造成本最低)
给每次URL调用添加间隔,让浏览器有足够时间处理新标签页请求,直接复用原有Application.OpenURL逻辑,不需要适配平台API:
// 替换原有循环调用为协程触发 StartCoroutine(OpenMultiUrls(mehrerenids)); IEnumerator OpenMultiUrls(List<string> idList) { foreach (var id in idList) { Application.OpenURL($"LINK/{id}"); // 间隔可根据实际效果调整,通常200-500ms即可生效 yield return new WaitForSeconds(0.3f); } }
方案2:UWP原生Launcher API调用(稳定性更高)
直接调用HoloLens 2原生UWP平台的启动API,不会被合并请求,无需添加延迟即可打开多个标签页,注意添加平台编译宏避免非UWP平台编译报错:
#if ENABLE_WINMD_SUPPORT && UNITY_WSA using Windows.System; #endif // 循环调用逻辑 foreach (var ids in mehrerenids) { string targetUrl = $"LINK/{ids}"; #if ENABLE_WINMD_SUPPORT && UNITY_WSA // 调用UWP原生API启动URL _ = Launcher.LaunchUriAsync(new Uri(targetUrl)); #else // 非UWP平台降级使用Unity默认API Application.OpenURL(targetUrl); #endif }
注意事项
需要确认HoloLens 2内置Edge浏览器的默认配置为「新链接打开新标签页」,默认系统配置均符合该要求,如有异常可手动在Edge设置中调整。
内容的提问来源于stack exchange,提问作者Fabian H.
相关产品推荐
相关产品推荐

