当我们通过Unity发布WebGL时,通常会希望我们的Unity3D程序可以和网页中的元素进行交互,通过Unity内部的函数与网页端的方法交互实现数据的实时传递。
当我们把Unity发布出来时,通常会包含如下的文件:
在Build文件夹中包含了WebGL所有打包的内容,其中最重要的部分是UnityLoader.js和*.json这两个文件。
详细的介绍可以从官方的Interacting with browser scripting中找到相关的内容。
在这里我们主要通过SendMessage()和Application.ExternalCall() 这两个方法实现WebGL和ASP.NET的交互。
SendMessage()可以实现从网页端调用Unity中的方法,该方法中主要包含三个参数,分别表示Unity中的物体名、方法名和参数。参数一般为基础类型,如字符串、数字等。
SendMessage(objectName, methodName, value);
在WebGL中,浏览器通过如下代码初始化Unity程序:
var gameInstance = UnityLoader.instantiate("gameContainer", "Build/WebAndUnity.json", { onProgress: UnityProgress });
其中UnityProgress.js实现了WebGL加载过程中的进度条,我们可以通过重写该JS中的脚本来自定义不同的进度条样式和显示方式。UnityLoader.js则主要实现了WebGL在实例化过程中需要完成的各项操作,同时也为用户提供了额外的交互方式,如Sen