Unity集成内嵌网页插件-支持Android和IOS
来源:互联网 发布:mac apowersoft 编辑:程序博客网 时间:2024/05/22 00:08
本文所用到的插件,是修改自一个日本人keijiro的代码。他的源码地址为:https://github.com/keijiro/unity-webview-integration
为更易于使用,本插件是将其源码由javascript改为C#代码,并做了一些修改和优化,并打包成unitypackage包,可直接导入项目中使用,方便快捷!
本插件支持Unity与网页javascript进行双向交互
插件下载地址http://download.csdn.net/detail/home_498/9577122
下面是该插件的使用方法:
1.导入插件包
右键你的工程,选择Import Package-Custom Package...,选择unity-webview.unitypackage
此时会显示你要导入的文件,如果不需要看我写的测试用例,则可以不勾选下面的WebViewExample,然后点击Import可导入
2.场景中引入
2D场景用的时候,只需在Canvas新建一个Empty(Create Empty),并绑定WebMediator.cs,调整这个Empty的位置和大小,就可以改变网页的显示位置和大小。
3D场景使用的时候,不需要调整位置和大小,在代码中调用SetMargin进行定位
3.代码调用
声明一个类变量,并将上面创建的empty对象绑定至该变量
public WebMediator WebView;
在使用的地方直接调用即可,千万别忘记加前面的http://
WebView.Show("http://blog.csdn.net/home_498/article/details/51918041");
3D场景使用的时候,再调用下面这句进行定位即可,传入的参数是网页到屏幕边框的距离
WebView.SetMargin(10, 10, 10, 10);4.Unity调用javascript方法
如下可直接从Unity调用javascript方法,第一个参数为javascript方法名,第二个参数为传入javascript方法的参数,为字符串类型
WebMediator.CallJavascript("javascriptMethod", "这里可以传入一个字符串参数");
5.javascript发消息到Unity
网页要发送消息到Unity,网页需要引入unity.js(在文章开头的下载地址打包下载),调用unity.callback即可发送消息到Unity,第一个参数为消息名,第二个参数为消息内容(传入一个json,到C#端直接以Hashtable形式取出)
网页代码
<html><head><meta http-equiv=Content-Type content="text/html;charset=utf-8"><script type="text/javascript" src="unity.js"></script><script type="text/javascript">function pushMsg(method){ var val = document.getElementById("testInput").value; unity.callback(method, {'msg':val});}function javascriptMethod(args){ alert(args);}</script></head><body><input id="testInput" /><input type="button" value="提交A" onclick="pushMsg('A')" /><input type="button" value="提交B" onclick="pushMsg('B')"/></body></html>
Unity中取消息需要主动调用PollMessage方法,可写在Update中每帧刷新执行,即可实现实时处理,效果上等同于javascript直接调用了Unity。
C#代码
private void ProcessMessages() { while (true) { // Poll a message or break. var message = WebMediator.PollMessage(); if (message == null) break; Debug.Log(message.path); switch (message.path) { case "A": A.text = message.args ["msg"].ToString(); break; case "B": B.text = message.args ["msg"].ToString(); break; default: break; } } } void Update() { if (WebMediator.IsVisible()) { ProcessMessages(); } }
- Unity集成内嵌网页插件-支持Android和IOS
- 关于Unity程序在IOS和Android上显示内嵌网页的方式
- Unity集成android插件
- Unity项目工程集成友盟分析统计SDK(支持iOS与Android平台)
- unity打开内嵌游戏网页
- Unity导出android工程集成到android studio项目内
- Unity SteamVR插件集成
- unity androidSDK和IOS内购
- unity发布网页版(内嵌网页)
- UGUI提高<七> 循环滚动插件和内嵌网页插件
- IOS 和 Android Unity游戏引擎的集成AdMob新版教程
- Unity和android集成操作步骤
- 四肢天气的插件内嵌网页
- Unity iOS内购
- iOS和Android持续集成
- iOS 集成内购
- Unity 支持 IPV6 (IOS)
- Unity 支持 IPV6 (IOS)
- P12证书和描述文件
- WebGIS实现在线要素编辑之ArcGIS Server 发布Feature Service 过程解析
- jquery和thinkphp利用formData属性ajax上传并,添加水印,裁剪,实现预览
- 20. 利用Veeam ONE监控vSphere虚拟化平台(Veeam ONE安装及配置)
- Arbitrage(bellman,最长路径)
- Unity集成内嵌网页插件-支持Android和IOS
- 【旧代码整理】uri路由处理的重要组成部分 Model_Route
- WebGIS实现在线要素编辑之ArcGIS Server 发布Feature Service 过程解析
- cython,加速python,保护代码(3):扩展文件 .pxd
- 四 skylable集群管理
- bootstrap模态框
- xml解析 SAX
- 剑指offer-5-面试36:数组中的逆序对(时间效率和空间效率的平衡)
- Oracle expdp/impdp导出导入命令及数据库备份