当前位置:   article > 正文

Unity集成内嵌网页插件-支持Android和IOS_unity程序中嵌入网页支持android

unity程序中嵌入网页支持android

本文所用到的插件,是修改自一个日本人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形式取出)

网页代码

  1. <html>
  2. <head>
  3. <meta http-equiv=Content-Type content="text/html;charset=utf-8">
  4. <script type="text/javascript" src="unity.js"></script>
  5. <script type="text/javascript">
  6. function pushMsg(method){
  7. var val = document.getElementById("testInput").value;
  8. unity.callback(method, {'msg':val});
  9. }
  10. function javascriptMethod(args){
  11. alert(args);
  12. }
  13. </script>
  14. </head>
  15. <body>
  16. <input id="testInput" />
  17. <input type="button" value="提交A" οnclick="pushMsg('A')" />
  18. <input type="button" value="提交B" οnclick="pushMsg('B')"/>
  19. </body>
  20. </html>

Unity中取消息需要主动调用PollMessage方法,可写在Update中每帧刷新执行,即可实现实时处理,效果上等同于javascript直接调用了Unity。

C#代码

  1. private void ProcessMessages() {
  2. while (true) {
  3. // Poll a message or break.
  4. var message = WebMediator.PollMessage();
  5. if (message == null) break;
  6. Debug.Log(message.path);
  7. switch (message.path)
  8. {
  9. case "A":
  10. A.text = message.args ["msg"].ToString();
  11. break;
  12. case "B":
  13. B.text = message.args ["msg"].ToString();
  14. break;
  15. default:
  16. break;
  17. }
  18. }
  19. }
  20. void Update() {
  21. if (WebMediator.IsVisible()) {
  22. ProcessMessages();
  23. }
  24. }


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/118897
推荐阅读
相关标签
  

闽ICP备14008679号