注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天涯倦客的博客

祝福你朋友永远快乐!

 
 
 

日志

 
 

转载:Unity3D之Web Player与unity的互相传值交互 .  

2016-08-18 13:51:57|  分类: U3D |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

转自:http://blog.163.com/wang_1980_ww/blog/static/1111410520162281444476/

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之间的传输功能实现了 

  评论这张
 
阅读(81)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017