在Unity WebGL中,你可以使用Javascript和C#的互操作性来获取当前页面的网址。以下是如何实现的步骤和示例代码:
-
首先,你需要创建一个Javascript脚本来获取当前页面的网址。(简单方法为:创建xxx.txt,修改文件后缀.txt 为.jslib,将创建好的文件放入unity的Plugins文件夹下)
-
然后,你可以在Unity中调用这个Javascript函数。
Javascript脚本 (GetCurrentUrl.jslib
):
javascript
mergeInto(LibraryManager.library, {
// 函数名需要与C#中调用的名称相匹配
GetCurrentUrl_GetUrl: function (buffer, length) {
// 获取当前页面的网址
var url = window.location.href;
// 将网址复制到C#传入的缓冲区
stringToUTF8(url, buffer, length);
},
});
C# 代码:
cs
using System.Runtime.InteropServices;
using UnityEngine;
public class UrlRetriever : MonoBehaviour
{
// 声明Javascript中的函数
[DllImport("__Internal")]
private static extern void GetCurrentUrl_GetUrl(byte[] buffer, int length);
private void Start()
{
// 创建一个字节数组来存储网址
byte[] buffer = new byte[1024]; // 假设网址长度不会超过1024字节
// 调用Javascript函数获取网址
GetCurrentUrl_GetUrl(buffer, buffer.Length);
// 将字节数组转换为字符串
string url = System.Text.Encoding.UTF8.GetString(buffer).TrimEnd('\0');
// 输出网址
Debug.Log("Current URL: " + url);
}
}
确保将GetCurrentUrl.jslib
文件添加到你的Unity项目中,并且在打包设置中启用了WebGL。
这样,当你运行Unity WebGL应用时,它会在控制台输出当前页面的网址。记得在实际的项目中对缓冲区大小进行适当的处理,以确保它足够大以存储可能的网址字符串。