我需要在两个方向上与页面通信Unity WebAssemly。
这是我从页面执行Unity功能的方式:
<script>
var gameInstance = UnityLoader.instantiate("gameContainer", "https://propper_url/Build/_Builds.json", {onProgress: UnityProgress});
function unityObjectFun(index)
{
gameInstance.SendMessage ("ObjectInstance", "objectFunctionName", index);
}
</script>
<a onclick="unityObjectFun(1)">invoke</a>
<div class="webgl-content">
<div id="gameContainer" myValue="need this to read from Unity"></div>
</div>
但是我该怎么做相反。是否可以从Unity检索myValue。
或者可以通知页面Unity已加载场景并开始播放,以便我可以将myValue发送给它吗?
答案 0 :(得分:1)
要在Unity WebAssembly的页面上执行任何JavaScript代码,需要做两件事:
整个过程在本指南中进行了描述:https://docs.unity3d.com/Manual/webgl-interactingwithbrowserscripting.html。
插件代码必须位于Assets / Plugins / pluginname.jslib路径(扩展名很重要)中,并且具有类似的结构:
mergeInto(LibraryManager.library, {
Hello: function () {
window.alert("Hello, world!");
},
HelloReturn: function () {
return "Hello, world!";
}
}
要使用它,需要导入:
using System.Runtime.InteropServices;
public class NewBehaviourScript : MonoBehaviour {
[DllImport("__Internal")]
private static extern void Hello();
[DllImport("__Internal")]
private static extern string HelloReturn();
void Start() {
Hello();
Debug.log(HelloReturn());
}
}