创建一个.txt文件更改为 .jslib格式 的文件放在Plugin文件夹下
var plugin = {
//获取地址栏的URL
StringReturnValueFunction: function () {
var returnStr = window.top.location.href;
var title =decodeURI(returnStr);
var bufferSize = lengthBytesUTF8(title) + 1;
var buffer = _malloc(bufferSize);
stringToUTF8(title, buffer, bufferSize);
return buffer;
}
};
mergeInto(LibraryManager.library, plugin);
在Unity 创建脚本进行使用
using UnityEngine;
using System.Runtime.InteropServices;
//区分内外网
public enum LineType
{
OutLine,
OnLine,
None
}
public class GameEnter : MonoBehaviour
{
[DllImport("__Internal")]
private static extern string StringReturnValueFunction();//获取地址栏的URL
public string UrlMsg = "地址参数";
public OpenController OpenController;
public LineType lineType;
private void Start()
{
GetUrl();
}
/// <summary>
/// 获取地址栏的URL
/// </summary>
private void GetUrl()
{
try
{
UrlMsg = StringReturnValueFunction();//调用JSLib文件中的方法
}
catch (System.Exception e)
{
UrlMsg = "[catch]" + e.Message;
}
Debug.Log("地址栏的地址是:"+UrlMsg);
//---------------------------下面是区分内网外的内容-----------------------------------------
if (UrlMsg.Contains("XX.XX.XX.XX"))
{
lineType = LineType.OutLine;
}
else if (UrlMsg.Contains("XX.XX.XX.XX"))
{
lineType = LineType.OnLine;
}
else
{
lineType = LineType.None;
}
if (lineType == LineType.None)
{
Debug.Log("本地模式,虚拟一个URL地址进行测试");
UrlMsg = "本地测试的可在unity打开测试的地址";//自己填写
DealWithUrl(UrlMsg);
}
else
{
Debug.Log("OutLine内网或外网模式进行测试");
DealWithUrl(UrlMsg);
}
}
/// <summary>
/// 处理URL地址 获取参数
/// </summary>
/// <param name="urlMsg"></param>
private void DealWithUrl(string urlMsg)
{
string[] UrlAndArg = urlMsg.Split('?');//索引0位URL地址,索引1 为 所有的参数
string[] Args = UrlAndArg[1].Split('&');
string[] URL = Args[0].Split('=');
string[] name = Args[1].Split('=');
string URLPath = URL[1];
Debug.Log(URLPath);
string titleName = name[1];
OpenController.GetBase64(URLPath);
OpenController.SetTitleName(titleName);
}
}