您的位置:首页 > 移动开发 > Unity3D

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立即返回的功能而不必等待被完成。传递的参数数量是可变的。

// 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之间的传输功能实现了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: