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/