Unity WebGL/WebPlayer与html通信对比,在html添加网页端按钮直接测试

Unity WebPlayer与html通信,在html添加网页端按钮直接测试

由于现在各大浏览器的升级,UnityWebPlayer的网页方式逐渐被摒弃掉,但是很多老项目或者追求稳定的开发者还在选择使用UnityWebPlayer的方式,近期我们一个老项目的更新功能就遇到了这个问题,但网上铺天盖地的都是WebGL与html的通信帖子,就是没有webPlayer的,真是让我头疼了一阵子。经过一番努力,最后终于搞定了,在此分享给大家,也给自己做个备忘笔记。

为什么要通讯
我们项目中需要获取到服务器的登录验证信息,也就是需要服务器的Cookie信息,而WebPlayer是Unity低版本的产物,在高版本中能用的方法,如: HttpWebRequest类、UnityWebRequest类这两种方法都不能在webPlayer里使用,最终我们想到在html里面获取服务器的cookie信息,然后传到Unity前端程序中 ,进行验证使用,最终解决了这个问题,当然要传什么看你自己的需求,本文就不介绍html获取cookie值的方法了。

通信写法
WebPlayer的使用流程和方法与WebGL类似,区别是在html中获取unity对象的方法不一样。发布出来的html的结构也不一样,接下来通过具体代码进行对比一下,我就是在这个地方卡了好久。
来来来,提前看一下核心代码不一样的地方,再看完整的。
webGL获取Unity目标对象:

  var gameInstance = UnityLoader.instantiate("gameContainer", "Build/SanQiaoYiSui.json",    {onProgress: UnityProgress});

WebPlayer获取Unity目标对象:

var config = {
    			width: 960, 
    			height: 600,
    			params: { enableDebugging:"0" }    				
       		};
config.params["disableContextMenu"] = true;
var u = new UnityObject2(config);

基本逻辑
1.获取unity目标实例
2.发送消息到unity目标实例的场景中
3.添加一个网页按钮,点击按钮调用函数,进行消息发送测试。

WebGL中html完整代码

   <html lang="en-us">
     <head>
       <meta charset="utf-8">
       <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
       <title>Unity WebGL Player | SanQiaoYiSui</title>
       <link rel="shortcut icon" href="TemplateData/favicon.ico">
       <link rel="stylesheet" href="TemplateData/style.css">
       <script src="TemplateData/UnityProgress.js"></script>  
       <script src="Build/UnityLoader.js"></script>
       <script>
         var gameInstance = UnityLoader.instantiate("gameContainer", "Build/SanQiaoYiSui.json",    {onProgress: UnityProgress});
               
      //加载入口场景成功后返回给服务器
   	  function LoadSceneName()
   	  {	   
   	   var sceneName  = "山东风之谷科技";
   	   //MainCamera 表示在场景中脚本挂在了此物体上
   	   //LoadSceneName  表示脚本中的函数名称
   	   //sceneName 表示发送的数据
       gameInstance.SendMessage("MainCamera", "LoadSceneName", sceneName);
   	   alert("测试是否进行了通讯函数");
   	  }		  
          </script>
         </head>
         <body>
           <div class="webgl-content">
             <div id="gameContainer" style="width: 960px; height: 600px"></div>
             <div class="footer">
               <div class="webgl-logo"></div>
               <div class="fullscreen" onclick="gameInstance.SetFullscreen(1)"></div>
               //添加网页端按钮
               	<input type="button" value = "测试通讯"  onclick = "LoadSceneName()" />
               <div class="title">SanQiaoYiSui</div>
             </div>
           </div>
         </body>
       </html>

在这里插入图片描述WebPlayer中html完整代码

<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		<title>Unity Web Player | HTTPData</title>
		<script type='text/javascript' src='https://ssl-webplayer.unity3d.com/download_webplayer-3.x/3.0/uo/jquery.min.js'></script>
		<script type="text/javascript">
		<!--
		var unityObjectUrl = "http://webplayer.unity3d.com/download_webplayer-3.x/3.0/uo/UnityObject2.js";
		if (document.location.protocol == 'https:')
			unityObjectUrl = unityObjectUrl.replace("http://", "https://ssl-");
		document.write('<script type="text\/javascript" src="' + unityObjectUrl + '"><\/script>');
		-->
		</script>
		<script type="text/javascript">
		<!--
			var config = {
				width: 960, 
				height: 600,
				params: { enableDebugging:"0" }
				
			};
			config.params["disableContextMenu"] = true;
			var u = new UnityObject2(config);
			function HandshakeProtocol()
			{
			//alert("收到unity的消息,开始发小");
			u.getUnity().SendMessage("Header","Headers","untiyddddd");
			}				
		-->
		</script>
		<style type="text/css">	
		</style>
	</head>
	<body>
		<p class="header"><span>Unity Web Player | </span>HTTPData</p>
		<div class="content">
			<div id="unityPlayer">
				<div class="missing">
					<a href="http://unity3d.com/webplayer/" title="Unity Web Player. Install now!">
						<img alt="Unity Web Player. Install now!" src="http://webplayer.unity3d.com/installation/getunity.png" width="193" height="63" />
					</a>
				</div>
			</div>
		</div>
		<p class="footer">&laquo; created with <a href="http://unity3d.com/unity/" title="Go to unity3d.com">Unity</a> &raquo;</p>
	</body>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值