如何通过Unity中的WebGL/C#在新标签页中打开链接?

4

目前,通过我的游戏打开链接会在同一界面中打开。我希望它能在新标签页中打开。我尝试研究插件和相关内容以便使.jslib文件与Unity项目交互,但是遇到了问题。我对这种交互方式还很陌生,同时也找不到插件检查器本身。

目前,我的代码做了以下操作:

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

这样可以在同一个浏览器中打开链接。我正在尝试使用户按下回车键时,可以在新的浏览器中打开该链接。

感谢任何帮助!


抱歉,我不是说一个新的浏览器,我是指一个新的标签页。 - Alienator5000
3个回答

5

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

Assets/plugins/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");
        }
    }
}

1

当前的解决方案(自Unity 2019以来)是Alienator5000最初尝试的那个,使用“Application.OpenURL”。

现在它会在新标签页中打开您的URL。您可以在我对这个stackoverflow帖子的回复中看到更多细节。

祝您拥有愉快的一天 :)


-2

在Unity中的另一种解决方案。即使已弃用,您仍然可以使用ExternalEval

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

1
当有一个可用的非废弃替代方案时,我不建议使用已弃用的函数。 - fguillen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接