Unity3D导出WebGL与ASP.NET交互
来源:互联网 发布:淘宝多少访客刷一单 编辑:程序博客网 时间:2024/06/17 12:47
当我们通过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程序:
<script src="TemplateData/UnityProgress.js"></script><script src="Build/UnityLoader.js"></script><script> var gameInstance = UnityLoader.instantiate("gameContainer", "Build/WebAndUnity.json", { onProgress: UnityProgress });</script>
其中UnityProgress.js实现了WebGL加载过程中的进度条,我们可以通过重写该JS中的脚本来自定义不同的进度条样式和显示方式。UnityLoader.js则主要实现了WebGL在实例化过程中需要完成的各项操作,同时也为用户提供了额外的交互方式,如SendMessage方法便是在该脚本中定义的,gameContainer为放置实例化出来的WebGL的放置空间。
用户通过gameInstance来实现对WebGL中的物体发送消息,执行相应的操作。
function sendMesseageToUnity() { gameInstance.SendMessage("ObjectName", "FunctionName", "ParamValue");//通过该函数便可实现从Web端调用WebGL内部挂在某个物体上的某个函数。 //SendMessage('MyGameObject', 'MyFunction'); //SendMessage('MyGameObject', 'MyFunction', 5); //SendMessage('MyGameObject', 'MyFunction', 'MyString'); //网页中通过gameInstance.SendMessage()方法对Unity中的物体发送消息,自动调用相应的代码,实现预期的功能。}
在Unity中,如果我们想要调用网页中的方法,如将游戏中的信息试试传递到网页中,我们可以在Unity中通过Application.ExternalCall()方法实现。
private void TellWebDoSomethingFromUnity(){ object[] obj = new object[]{"SomeValue"}; Application.ExternalCall("FunctionName",obj);}
我们只需要在gameInstance所在的页面定义
function FunctionName(value){ //do something}
便可调用Web端的方法,同时将Unity中的数据传递到Web页面中,在传递数据过程中如果数据量较大,我们可以分批传递,传递完成后将信息拼接处理便可使用。
以上实现方法虽然在较新的Unity版本中能够实现相关功能,但是随着Unity的更新,上述方法很可能会渐渐被新的方法替代。
在Unity官网上提供了新的实现方法,大家可以深入研究下。
- Unity3D导出WebGL与ASP.NET交互
- Unity3D的WebGL开发(二)与网页代码交互
- ASP.NET与JavaScript交互
- ASP.NET与JS交互
- ASP.NET与JS交互
- Javascript与ASP.NET交互
- ASP.NET与JS交互
- ASP.NET与JS交互
- ASP.NET与JS交互
- unity与webGL的交互
- Unity3D发布WebGL(网页)到IIS服务器并加入ASP.NET页面中
- asp.net用ajax交互实现文档导出及下载
- javascript 与 asp.net 的交互
- javascript 与 asp.net 的交互
- javascript与asp.net的交互
- javascript 与 asp.net 的交互
- flash与asp.net的交互
- ASP.NET与JavaSrcipt交互问题
- [日常训练] 小Y包汤圆
- MySQL的sql_mode 模式修改 my.cnf
- python文件的基础及文件读入合并操作使用实例
- inlineHook
- display:inline-block的间隙问题和解决办法
- Unity3D导出WebGL与ASP.NET交互
- react入门案例
- select chosen 禁用下拉框某一个option
- [PAT乙级]1041. 考试座位号(15)
- 顺序栈的表示与实现
- 整数在内存中的存储
- ntpconf
- nginx报502错误
- 面向对象的设计原则:接口隔离原则