Unity显示内嵌网页的研究

最近由于有需要在Unity程序运行在iOS或Android手机上显示内嵌网页。所以遍从网上搜集了一下相关的资料。整理如下:

UnityWebCore

从搜索中先看到了这个,下载下来了以后发现这个的原理好像是通过调用浏览器内核,然后将网页渲染到mesh的方式完成的。但遗憾的是只支持windows桌面版本。但还是发出来大家如果有需要可以下载

下载地址: http://pan.baidu.com/s/1nt3FVkd

unity-webview

这个是在github上找到的。是一个keijiro的日本人编写。

https://github.com/keijiro/unity-webview-integration

就是根据手机平台在手机上调用相应的WebView组件显示,比如IOS上就是调用UIWebView。同时自己定义了与JavaScript交互的格式,可以在unity的c#代码中相应javascript的调用。需要的朋友可以试试。需要在ios和android上才能看到效果。

根据keijiro编写的项目,在github上你还可以搜索到其他人fork后修改的项目,应该是进行了一些封装和修改,但都是基于keijiro的。

https://github.com/Kogarasi/Unity-Webview

https://github.com/gree/unity-webview

UniWebView

这个是一个中国人编写的组件,也是根据手机平台调用相应的WebView上组件来显示,也可以支持和javascript的交互。工程很完善。在mac
os以及手机的系统上直接可以看到运行效果,并且效果很不错。推荐使用的,但是我就不能提供下载地址了。因为这个插件是收费的。为了支持作者还请大家自行购买。

另外还有pc上的插件Awesomium

http://www.awesomium.com/

http://labs.awesomium.com/unity3d-integration-tutorial-part-1/

http://www.ceeger.com/forum/read.php?tid=13526&page=1

腾讯浏览内核

http://x5.tencent.com/tbs/

百度 VR 浏览器com.baidu.vrbrowser

基于Google VR SDK for Unity开发

libaudioplugingvrunity.so
libgvrunity.so md5 与 GoogleVR 中的文件一致

Java C# 均未混淆

网页使用EasyWebviewTexture

目前EasyWebviewTexture已经停止购买/下载

Java层使用 ijkPlayer;
Unity层使用EasyMovieTexture

浏览器内核使用crosswalk

[三星 Gear VR 浏览器
com.sec.android.app.svrbrowser](http://git.devops.letv.com/LvrBrowser/VR-
Browser-Decompile#%E4%B8%89%E6%98%9F-gear-
vr-%E6%B5%8F%E8%A7%88%E5%99%A8-comsecandroidappsvrbrowser)

[基于 Unity 开发](http://git.devops.letv.com/LvrBrowser/VR-Browser-
Decompile#%E4%B8%89%E6%98%9F-gear-
vr-%E6%B5%8F%E8%A7%88%E5%99%A8-comsecandroidappsvrbrowser)

[Java C# 均未混淆](http://git.devops.letv.com/LvrBrowser/VR-Browser-
Decompile#%E4%B8%89%E6%98%9F-gear-
vr-%E6%B5%8F%E8%A7%88%E5%99%A8-comsecandroidappsvrbrowser)

[网页使用 ](http://git.devops.letv.com/LvrBrowser/VR-Browser-
Decompile#%E4%B8%89%E6%98%9F-gear-
vr-%E6%B5%8F%E8%A7%88%E5%99%A8-comsecandroidappsvrbrowser)EasyWebviewTexture

浏览器内核使用Chromium

[大朋 VR 浏览器](http://git.devops.letv.com/LvrBrowser/VR-Browser-
Decompile#%E5%A4%A7%E6%9C%8B-vr-%E6%B5%8F%E8%A7%88%E5%99%A8)

[普通原生浏览器, 开启了强制横屏](http://git.devops.letv.com/LvrBrowser/VR-Browser-
Decompile#%E5%A4%A7%E6%9C%8B-vr-%E6%B5%8F%E8%A7%88%E5%99%A8)

[下载 ](http://git.devops.letv.com/LvrBrowser/VR-Browser-
Decompile#%E5%A4%A7%E6%9C%8B-
vr-%E6%B5%8F%E8%A7%88%E5%99%A8)[com.android.browser](http://git.devops.letv.com/liuwencai
/DeepoonVR-App/blob/master/com.android.browser.apk);
需要先卸载系统的浏览器

[ 关于crosswalk](http://git.devops.letv.com/LvrBrowser/VR-Browser-
Decompile#easywebviewtexture)

[基于chrome内核解析网页 可以兼容android4.0以下的系统
**](http://git.devops.letv.com/LvrBrowser/VR-Browser-
Decompile#easywebviewtexture)
https://crosswalk-project.org/**

Android4.4版本以下webView是基于webkit,4.4以上是基于chromium。国内浏览器都是基于chromium,除了遨游是基于webkit,而safari也是基于webkit。chromium其实也是基于webkit。

浏览器引擎分类

浏览器的内核引擎,基本上是四分天下:

Trident: IE 以Trident 作为内核引擎;

Gecko: Firefox 是基于 Gecko 开发;

WebKit: Safari, Google Chrome,傲游3,猎豹浏览器,百度浏览器 opera浏览器 基于 Webkit 开发。

Presto: Opera的内核,但由于市场选择问题,主要应用在手机平台–Opera mini

注:2013年2月Opera宣布转向WebKit引擎

注:2013年4月Opera宣布放弃WEBKIT,跟随GOOGLE的新开发的blink引擎

unity避免代码被反编译

我最近研究发现80%以上的Unity3D游戏都没有做代码混淆。而且我觉得反编译后的代码可阅读性更加好。今天把《锁链战记》的代码和资源都反编译出来了。

1.Unity编译后最终会将代码编译在dll里面,无论是ios还是Android解开包以后都可以拿到dll,路径在Data/Managed
/Assembly-CSharp.dll

2.IOS其实不用做代码混淆,应该是苹果帮我们做了,反编译以后只能看到变量名,和方法名,但是具体的方法体内的代码是万全看不到的,不过安卓不行!!!

3.所以如果要反编译某游戏的代码,一定要去找它的Android版本,然后解开包,拿出它的Assembly-CSharp.dl

4.在Windows上去下载.NET Reflector
8这个反编译dll的软件,网上一大堆,但是一定要下载最新版本。目前我没找到可以在MAC上反编译dll的软件,如果那位大神知道请一定要告诉我噢。

5.mac 上反编译,请看我的另一篇文章 http://www.xuanyusong.com/archives/2675

使用步骤

把Assembly-CSharp直接拖进去。

所有的代码,类名,方法名,方法体,一清二楚。这代码,这缩进,嘿嘿。AssetbundleManager应该就是他们自己写的处理Assetbundle的下载管理类了。

如果有心的话你可以全局搜索一下”http”关键字 可能就能找到CDN或者Assetbundle的下载地址了。

如果避免自己的游戏被反编译

大家可以去搜索一下Codeguard这个插件,(网上可以找到破解版)它可以防止你的代码被反编译。它主要是改名,把你的方法名,方法体名子修改了,变量名修改了。虽然有点弱但是它的优点是比较方便,因为可以在打包的时候自动完成代码混淆的工作。不用自己去手工做混淆,我不知道有没有更好的自动混淆方法,如果那位大神知道请一定要告诉我。

另外,还有一个更高级的办法。直接找unity官方,它们有防止代码反编译的服务,绝对有效。还有一个方法 用Crypto Obfuscator for .Net
这东西可以完美混淆Unity for Android的代码,也支持打包APK 时批处理脚本完成混淆部分。但是MAC 上不支持,看了一大堆混淆.net
的方法,全部是基于windows上的。 有哪位大神知道怎么在mac上进行Andorid的混淆工作。。

作者:雨松MOMO

提取游戏资源的三个工具

这两天无意间又发现了两个提取Unity游戏资源的工具,这会儿刚好有时间我就码点字总结一下。

一、disunity

因为之前写过了所以这里就不介绍了 。Unity3D研究院之mac上从.ipa中提取unity3D游戏资源(六十六)


http://www.xuanyusong.com/archives/2584

二、UnityAssetsExplorer

下载地址:http://www.nexusmods.com/pillarsofeternity/mods/27/?tab=2&navtag=http%3A%2F%2Fwww.nexusmods.com%2Fpillarsofeternity%2Fajax%2Fmodfiles%2F%3Fid%3D27&pUp=1

百度云下载地址: http://pan.baidu.com/s/1AwTrg

如果你想解Unity5的游戏包,请使用 UnityAssetsExplorer 1.5 以上版本。

百度云下载地址: http://pan.baidu.com/s/1sjkjSJz

如下图所示,OpenAssets-File 选一个 .asset 或者一个.assetbundle 然后Extract
All即可导出,感觉只是在disunity上增加了一个可视化的功能。

三、UnityStudio

其实我觉得这个工具非常牛逼、前面两个都只能把资源解开,预览图片资源得用别的工具才能打开。然而UnityStudio可以直接在自己的软件上查看图片、shader、文本、还能直接播放音频、甚至还能看场景Hierarchy视图的树状结构。强烈推荐用UnityStudio啊。

下载地址:http://forum.xentax.com/viewtopic.php?f=10&t=11807

百度云下载地址: http://pan.baidu.com/s/1hqjMnOg

UnityStudio最新版本下载 支持unity5.x https://github.com/Perfare/UnityStudio/releases

直接预览图片

直接播放音频

查看场景树状结构

查看Shader代码。

查看文本内容

如果你想解Unity5的游戏包,请使用 UnityAssetsExplorer 1.5 以上版本。

百度云下载地址:http://pan.baidu.com/s/1sjkjSJz

因为Unity提供资源的工具很多,所有有些团队为了避免别人提取所以对资源进行了加密,最近又发现了一个神器基于硬件层面查看内存贴图,这样就直接无视对方加密了。。

下载地址在这里https://developer.nvidia.com/gameworksdownload

下载Tegra Graphics Debugger 支持Mac Linux Windows

安装好以后连上安卓机器, 这里安卓的机器得是Tegra 机型查询<http://www.nvidia.cn/object/tegra-phones-
cn.html>

然后要选一个abd的路径,在android的sdk里platform-tools/adb

接着选择一个游戏包名,Lanch一下就会自动启动游戏,并且开始分析。

点击Capture Frame 截取一帧,然后选择Texture就可以看内存了, 给力吧。。

如果没有Tegra的手机,用高通的也可以,高通这个给力可以批量导出所有图片

下载地址:https://developer.qualcomm.com/software/adreno-gpu-sdk/tools

参考资料:http://zenhax.com/viewtopic.php?t=12

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×