【问题标题】:How to open a link on a new tab using WebGL/C# through Unity?如何通过 Unity 使用 WebGL/C# 在新选项卡上打开链接?
【发布时间】:2020-06-12 16:11:36
【问题描述】:

目前通过我的游戏打开一个链接会在同一个界面中打开该链接。我希望它在新标签页上打开。我尝试研究插件和诸如此类的东西,以便 .jslib 文件与 Unity 项目交互,但也遇到了问题。我是这种交互的新手,所以我在查找插件检查器本身时也遇到了问题。

目前,我的代码是这样做的:

private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Return))
        {
            Application.OpenURL("www.google.com");
        }
    }

所以这会在同一个浏览器上打开链接。我正在努力做到这一点,所以当用户点击返回键时,他们会打开该链接到一个新的浏览器。

感谢任何帮助!

【问题讨论】:

  • 对不起,我不是说新浏览器,我是说新标签页^

标签: c# unity3d unity-webgl


【解决方案1】:

一种正确的方法是使用 .jslib 文件

资产/插件/plugin.jslib

var plugin = {
    OpenNewTab : function(url)
    {
        url = Pointer_stringify(url);
        window.open(url,'_blank');
    },
};
mergeInto(LibraryManager.library, plugin);

你的 C# 脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.InteropServices;

public class OpenURL : MonoBehaviour
{
    [DllImport("__Internal")]
    private static extern void OpenNewTab(string url);

    public void openIt(string url)
    {
#if !UNITY_EDITOR && UNITY_WEBGL
             OpenNewTab(url);
#endif
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Return))
        {
            openIt("www.wateverurluwant.com");
        }
    }
}

【讨论】:

  • 非常感谢!
【解决方案2】:

当前的解决方案(自 Unity 2019 左右以来)是 Alienator5000 最初尝试的解决方案,使用“Application.OpenURL”。
现在,它会在新选项卡中打开您的 URL。您可以在我对this other stackoverflow post 的回复中查看更多详细信息。

祝你有美好的一天:)

【讨论】:

    【解决方案3】:

    统一的另一种解决方案。你仍然可以使用ExternalEval,即使它已被弃用:

    Application.ExternalEval("window.open('" + YourLink + "', '_blank')");
    

    【讨论】:

    • 当有一个不推荐使用的替代方法时,我不会推荐一个不推荐使用的函数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    • 2016-05-03
    • 1970-01-01
    • 2020-09-20
    • 2015-09-17
    • 1970-01-01
    • 2021-12-09
    相关资源
    最近更新 更多