Unity WebGL与浏览器脚本交互

Unity发布成WebGL之后,可以与浏览器脚本进行交互,

官方说明链接:https://connect.unity.com/doc/Manual/webgl-interactingwithbrowserscripting

 

浏览器脚本调用Unity方法

在浏览器脚本中,支持调用Unity的方法,提供了和Unity中一样的SendMessage方法。

SendMessage(脚本所在游戏对象, 要调用的方法, 参数);

在浏览器脚本中,直接调用即可。

 

  <script>
    var gameInstance = UnityLoader.instantiate("gameContainer", "Build/ShimaRinWeb.json", { onProgress: UnityProgress });

    function SendToUnity() {
      var info = document.getElementById("SendText");
      gameInstance.SendMessage('GameMaster', 'GetFromHtml', info.value);
    }
  </script>

 

Unity调用浏览器脚本方法

之前Unity提供的Application.ExternalCall方法现在已经被设为过时。

现在需要用到的方法是在Plugins目录下添加“*.jslib”文件,将浏览器脚本写在里面。

脚本格式如下。需要注意的是,Unity发送过去的信息需要经过转换才行。

mergeInto(LibraryManager.library, {
  GetFromUnity: function (info) {
    document.getElementById("ShowInfo").value=UTF8ToString(info);
  },
});

在Unity中用“DllImport”注解引入方法即可

[DllImport("__Internal")]
private static extern void GetFromUnity(string info);

public void SendToHtml()
{
    GetFromUnity(inputField.text);
}

 

其他注意内容

Unity发布的WebGL会将键盘输入截取,导致只能在Unity生成的画布中输入,无法在浏览器其他地方进行输入。

Unity提供了“WebGLInput.captureAllKeyboardInput”属性,当该属性为“false”的时候,即可在浏览器其他地方输入,默认值为“true”。

 

这里做了个Demo,地址如下,访问速度略慢,见谅。

http://www.nshworkshop.cn/unityweb/

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值