首先我想说我这里其实有unity做的加载子游戏的做法。
打包平台是安卓。unity有个插件可以加载h5游戏,只要用cocoscreator打包web mobile平台就行。使用的是安卓的webview。
然后unity本身和H5游戏交互,就实现了大厅和子游戏。
然后因为这个插件最低要求安卓5.0.公司为了兼顾安卓4.4的玩家。我想用cocoscreator再实现一次安卓平台+h5游戏。
我理解下,网上的cocoscreator都是安卓平台的大厅+游戏打包安卓平台资源,通过修改路径来实现加载不同的游戏。
这种做法虽然可以实现。不过后期我希望能加载别人写的H5游戏。这种写法就不对了,请问哪位大神可以说一下用安卓平台加载H5游戏资源的做法,thx。
@t_cyj 使用腾讯的tbs应该可以解决你的问题, 使用原生java代码创建x5的webview, 导出接口给unity或者cocos调用就可以了.
https://x5.tencent.com/guide/sdkInit.html

可以的,没问题.我现在就是安卓用的X5,IOS用的原生webview.来加载的H5游戏
我做了一个很骚的操作。
首先项目中添加webview。然后动态修改url地址。
地址指向的H5游戏资源并不存在。
然后运行。这个时候webview会显示找不到文件。
然后把H5游戏资源放到resource文件夹下。刷新页面。这时候webview就能正常显示H5游戏了。
但是不能点cocoscreator,点了以后引擎会给游戏资源生成.meta文件。然后就无法正常运行。
我猜游戏的js文件和大厅的js文件同名类有冲突。
那么问题来了。。。看起来webview可以正常显示本地H5游戏资源,为什么用起来这么累。。。
let url = this.getURL(“resources/subgame/index.html”);
var webView = this.node.getComponent(cc.WebView);
webView.url = url;

多谢楼上的提议x5。可以做为备用方案。
4.海海外版本的App可以使⽤用X5内核吗?
由于Google Play对于动态下发⼆二进制代码的限制,我们⽆无法针对Google Play版本的app动态投放内
核,所以需要上架Google Play的APP暂时⽆无法使⽤用X5内核
看起来我用不了,我们是要上google play的
问题已经解决了。
我的做法是打包的时候不要放入游戏资源。在生成安卓工程后,在res\raw-assets\resources文件夹下放入h5游戏的资源。
然后我用AndroidStudio写java代码,获取webview控件。设置读取权限。然后就可以load网页了,load方法写在cocos或者java里都可以。
java里的写法:
List views = app.getAllChildViews();
int size = views.size();
for(int i = 0; i < size; ++i)
{
View temp = views.get(i);
if (temp instanceof WebView)
{
app.webview = (WebView)temp;
}
}
app.webview.post(new Runnable() {
@Override
public void run() {
WebSettings wSet = app.webview.getSettings();
wSet.setAllowUniversalAccessFromFileURLs(true);
app.webview.loadUrl(“file:///android_asset/res/raw-assets/resources/subgame/index.html”);
}
});
最后一行loadurl就是在java里载入资源的方法。如果在cocos里设置url也行。就是要注意先要java执行setAllowUniversalAccessFromFileURLs方法以后,webview才能load到游戏资源。否则,因为安全问题webview是不能读取json文件的。这个方法也有问题我不知道setAllowUniversalAccessFromFileURLs这个会不会有其他安全问题。
其中app是在activity里的,
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
…
app = this;
}

