Unity3D之Web Player与unity的互相传值交互
2016-03-07 18:40
627 查看
Web Player是Unity3d自带的一个Web端插件。它可以作为普通的网站来用也可以与Unity3d进行交互。
现在先讲unity传向Web player的方法。非常简单只有一句代码: Application.ExternalCall();注意这个方法只用于Web Player。
调用一个包含在网页中的函数(只用于Web Player)。
调用包含在网页中名为functionNameJavaScript函数,并传递给定的参数。支持原始的数据类型(string, int, float, char)和这些类型的数字。如何其他的对象被转化为字符串(使用ToString方法)并作为字符串传递。
这个函数调用时不会被阻塞,即ExternalCall立即返回的功能而不必等待被完成。传递的参数数量是可变的。
被调用的在HTML中的函数只需要使用标准的语法即可,例如:
这个方法的理论已经讲完了,下面进行实例讲解:
这是我在unity3D里写的一段代码。实现功能是点击鼠标左键就会执行传向Web Player的方法。
![](https://img-blog.csdn.net/20160307174612086)
下面是在Web Player中打开的代码。只写了一个方法(黄色线框中的方法)。这个方法用来接收unity传入的一个参数并且把这个参数显示在弹出的警告框中。
![](https://img-blog.csdn.net/20160307175121131)
下面就是运行结果了:当点击鼠标左键时就会弹出这个框,并且把Unity里的数据传过来。这是在IE浏览器里看到的,有些浏览器会自动屏蔽弹框等等。大家最好找个适合开发测试的浏览器。
![](https://img-blog.csdn.net/20160307175317540)
上面讲的是Unity如何向Web Player进行传输数据。下面讲一下Web Player如何向Unity传输。
首先我们要知道Web Player是unity打包出来的一个网页。打包出来的包里有两个文件,一个是网页文件.html,另个是unity文件。
例如我们刚才那个网页,如下:
![](https://img-blog.csdn.net/20160307180418679)
当我们打开这个网页文件后在里面添加一句代码就可以传值给Unity.这个方法是:u.getUnity().SendMessage();
具体方法如下图:
![](https://img-blog.csdn.net/20160307183201637)
下面详细解释一下,图中的var u = new UnityObject2(config);这句是打包出来的网页自带的语句。而黄色线框内的东西是我们自己写的方法。这句功能是当这个网页运行时候就会触发大括号里面的方法。而大括号里面首先有个警告框方法(上面已经讲过),另个方法就是传值给Unity的方法。具体参数类型是String:Plane是unity中必须存在而且可以找到的物体。SS是绑定给这个Plane物体的方法。而我是WEB
Player这句是我们要发送给unity的消息。
通过以上的描述可以知道unity里必须要有东西去接收和显示这个传来的信息。那么在unity里如下:首先要存在一个Plane,而且有个脚本绑定在上面,还需要给一个Text来显示传来的信息。
![](https://img-blog.csdn.net/20160307182020997)
再看这个脚本里的方法;方法名必须和WEB palyer里的那个一样即为SS,要有个参数而且是String类型的。
![](https://img-blog.csdn.net/20160307182135279)
这样一切都准备完毕了。运行一下:
首先是弹出警告框:
![](https://img-blog.csdn.net/20160307183414388)
然后点击之后就会看到,消息已经传到了unity的text里面:
![](https://img-blog.csdn.net/20160307183453015)
这样就把Unity和web player之间的传输功能实现了。
现在先讲unity传向Web player的方法。非常简单只有一句代码: Application.ExternalCall();注意这个方法只用于Web Player。
调用一个包含在网页中的函数(只用于Web Player)。
调用包含在网页中名为functionNameJavaScript函数,并传递给定的参数。支持原始的数据类型(string, int, float, char)和这些类型的数字。如何其他的对象被转化为字符串(使用ToString方法)并作为字符串传递。
这个函数调用时不会被阻塞,即ExternalCall立即返回的功能而不必等待被完成。传递的参数数量是可变的。
// Calls MyFunction1 in web page with no arguments // 调用网页上的MyFunction1并不使用参数。 Application.ExternalCall ("MyFunction1"); // Calls MyFunction2 in web page with a string //调用网页上的MyFunction2并使用字符串参数。 Application.ExternalCall ("MyFunction2", "Hello from Unity!"); // Calls MyFunction3 in web page with several arguments of different types //调用网页上的MyFunction3并使用几个不同类型的参数。 Application.ExternalCall ("MyFunction3", "one", 2, 3.0);
被调用的在HTML中的函数只需要使用标准的语法即可,例如:
<script language="JavaScript" type="text/javascript"> <!-- // Using the above call from Unity, this will receive // 使用来自Unity的调用,这将接受 // "Hello from Unity!" as the argument. // "Hello from Unity!" 做为参数 function MyFunction2( arg ) { alert( arg ); } --> </script>
这个方法的理论已经讲完了,下面进行实例讲解:
这是我在unity3D里写的一段代码。实现功能是点击鼠标左键就会执行传向Web Player的方法。
下面是在Web Player中打开的代码。只写了一个方法(黄色线框中的方法)。这个方法用来接收unity传入的一个参数并且把这个参数显示在弹出的警告框中。
下面就是运行结果了:当点击鼠标左键时就会弹出这个框,并且把Unity里的数据传过来。这是在IE浏览器里看到的,有些浏览器会自动屏蔽弹框等等。大家最好找个适合开发测试的浏览器。
上面讲的是Unity如何向Web Player进行传输数据。下面讲一下Web Player如何向Unity传输。
首先我们要知道Web Player是unity打包出来的一个网页。打包出来的包里有两个文件,一个是网页文件.html,另个是unity文件。
例如我们刚才那个网页,如下:
当我们打开这个网页文件后在里面添加一句代码就可以传值给Unity.这个方法是:u.getUnity().SendMessage();
具体方法如下图:
下面详细解释一下,图中的var u = new UnityObject2(config);这句是打包出来的网页自带的语句。而黄色线框内的东西是我们自己写的方法。这句功能是当这个网页运行时候就会触发大括号里面的方法。而大括号里面首先有个警告框方法(上面已经讲过),另个方法就是传值给Unity的方法。具体参数类型是String:Plane是unity中必须存在而且可以找到的物体。SS是绑定给这个Plane物体的方法。而我是WEB
Player这句是我们要发送给unity的消息。
通过以上的描述可以知道unity里必须要有东西去接收和显示这个传来的信息。那么在unity里如下:首先要存在一个Plane,而且有个脚本绑定在上面,还需要给一个Text来显示传来的信息。
再看这个脚本里的方法;方法名必须和WEB palyer里的那个一样即为SS,要有个参数而且是String类型的。
这样一切都准备完毕了。运行一下:
首先是弹出警告框:
然后点击之后就会看到,消息已经传到了unity的text里面:
这样就把Unity和web player之间的传输功能实现了。
相关文章推荐
- Unity开发Android游戏(二)Hello world!
- Unity开发Android游戏(一)搭建Unity安卓开发环境
- Unity3D Android手机开发环境配置,可真机发布调试
- 在Unity中使用Shader
- [Solution] DI原理解析及Castle、Unity框架使用
- Unity插件之Editor Console Pro
- 【转】关于unity中的update、Lateupdate和FixedUpdate。
- Unity3D 移动平台Path对应路径以及文件路径权限
- Unity3D如何接入第三方的SDK - Android篇
- Unity Notes之屏幕触点轨迹的平滑
- Two kinds of Quaternion SlerpImp (Unity)
- Unity_UGUI_动画系统
- unity提取打包资源
- [Unity优化]UGUI图集的使用
- 项目记录26--unity-tolua框架 View03-UIManager.lua
- Unity3D常用的代码
- Unity圣典网址
- Unity3d外包—就找北京动点软件(长年承接Unity3d软件、游戏项目外包)
- Unity发送短信
- 构建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统(57)-插件---ueditor使用