Unity3D手机中的网页调用与回调

Unity3D手机中的网页调用与回调,其实就是我们口中常说的Webview,是手机项目里调用网页,来代替游戏画面展示的一种方法。因为其展示的是网页,所以展示画面是相对动态的,可以由服务器来控制。但是我们不只需要展示画面,还需要当点击网页按钮时产生回调以使U3D执行指定程序。

其实日本在webview这个模块上做的很不错,我也是借用日本Gree公司在github上公开的webview程序来作为底层代码的,只是我稍微改进了下,以适合自己的程序习惯和项目习惯。下面我主要介绍下这个webview的运作机制。

一、调用Webview打开网页。 我在源码基础上加了个单例接口,使得接口调用更加简单。

初始化接口:WebViewObject.sInstance.Init((msg)=>{
Debug.Log(string.Format("CallFromJS[{0}]", msg));
}); 初始化传入的是点击回调的消息接口。

设置窗体大小:WebViewObject.sInstance.SetMargins(5, 5, 5, 40); 窗体大小定义的十左边,上边,右边,下边的间隔像素。

展示OR关闭网页:WebViewObject.sInstance.SetVisibility(true);

通过地址加载某网页:WebViewObject.sInstance.LoadURL(path);

二、Webview在不同平台的插件载体和编译这些载体的方法。

这里主要是Android、IPHONE和MAC平台---因为它只做了这3个平台,所以Windows平台的同学就不能再编辑器里看到了,调试Webview时就用MAC吧。Android使用jar做插件体,iphone用.mm文件做插件体,mac用bundle做插件载体。

iphone是用.mm文件,所以不用编译载体,只有Android和Mac需要。在platformsrc/Android和platforsrc/iOS下分别有install.ssh文件可以执行,用来编译各自的载体。所以你只要执行就可以了。

三、Webview网页按钮回调。

Webview网页按钮回调的功能对我们来说非常有用,所以这里细致讲下它是如何辨认并回调的。 所有的网页里的链接都可以想象成按钮,无论是图片超链接还是普通的链接地址,更或是form形式的submit提交按钮,都是以网页形式访问网页地址。当访问网页地址时,native程序中拦截了网页地址,并查看网页地址是否以'unity:'打头,如果是以'unity:'打头的认为是调用unity3d的按钮,将此地址直接发送(SendMessage)给U3D的Webview程序,让其判断根据接收到得地址判断需要调用哪段程序。比如,地址为unity:auth,U3D程序在init时传入的接口接收到的为auth的字符串。所以如果你想让网页链接调用U3D程序,你就把链接写成unity:开头的超链接。

最后,我们既然有了手机中得网页调用与回调,我们就可以充分运用其在游戏里的功能了,最最基础的就是公告了,其次就是攻略网页,还有游戏功能的说明和调用,甚至有时可以直接代替游戏画面,直接替换画面的灵活性就非常强大了。

现在,我连Webview的测试案例都写好,测试案例的项目在git clone 后切记使用 git submodule update --init 更新submodule。:)Good luck!

注:有人反馈显示网页后,点击奔溃的问题,这是U3D的Editor本身与MAC兼容的问题,U3D编辑器的调用MAC程序奔溃比较频繁,所以细致的测试还得在真机上进行比较合适。

img

源码地址:Unity3DWebview

测试案例地址:Unity3dWebviewTest

转载请注明出处:http://www.luzexi.com

感谢您的耐心阅读

Thanks for your reading

  • 版权申明

    本文为博主原创文章,未经允许不得转载:

    Unity3D手机中的网页调用与回调

    Copyright attention

    Please don't reprint without authorize.

  • 微信公众号