Creator2.4.0如何发布头条小游戏

前言

  1. 在这里,我遇到的问题是:游戏包超过4m,并且小于等于8M,不需要远程资源服务器,使用分包即可。
  2. Creator推出了2.4版本,使得全平台都有了分包管理的能力,其实这句话我说的不够严谨,对于头条来说,这个AssetBundle就有些尴尬了。如果将bundle放入resource目录下打包微信小游戏报错 image.png 因为我们发布头条小游戏基本都是通过微信小游戏修改后上线,但是头条小游戏是不支持分包加载的,只能把资源都放到resource下,这岂不是尴尬了吗?

我想到的方案

打包头条小游戏的时候还是需要先打微信包,只是在打包之前需要将之前设置的AssetBudle目录设置为普通目录,然后将资源包放回resource中。然后打其他包的时候再将Bundle文件夹从resource目录中拿出来。

发布步骤

  1. 关闭Creator,将所有bundle目录及修改后的meta文件移动到resource目录下并删除所有bundle目录及meta文件。
  2. 打开Creator 修改代码逻辑,不使用引擎的AssetBundle,这一部分通过我的sdk整合框架+我的AssetBundle使用方式很容易做到,这一步其实在切换平台的时候就完成了。
  3. 使用Creator 发布微信小游戏,用头条开发者工具调试发布上线。
  4. 关闭Creator 运行另脚本将resource下的所有bundle目录及修改后的meta文件再拷贝到resource外,并删除resource中的所有bundle目录及meta文件。
  5. 打开Creator 发布其他渠道。

关键脚本

1var fs = require('fs'); 2var path = require('path'); 3var file_util = require('./file_util') 4//需要被移动到resource下的bundle。 5var folderList = ['lobby','decoration','outdoor'] 6//源目录 7var asset_path = process.argv[2]; 8//目标目录 9var export_dir = process.argv[3]; 10//是否是bundle 1和0 11var opt = process.argv[4]; 12 13function getBundleName(name){ 14 for(var i = 0; i < folderList.length; i ++){ 15 let s = folderList[i] 16 if(name.indexOf(s) >= 0){ 17 return s; 18 } 19 } 20 return null; 21} 22 23function setBundle(meta_name,opt){ 24 console.log(' meta_name',meta_name,' opt ',opt) 25 var flag = opt == '1' ? true : false; 26 console.log(' flag ',flag) 27 let fileData = file_util.readFile(meta_name) 28 if(fileData){ 29 var obj = JSON.parse(fileData); 30 obj['isBundle'] = flag 31 console.log('fileData 2222 ',JSON.stringify(obj)) 32 file_util.writeFile(meta_name,JSON.stringify(obj)) 33 } 34} 35 36 37function exchangeFiles(asset_path,export_dir,opt) { 38 var stat = fs.statSync(asset_path); 39 if (!stat.isDirectory()) { 40 return; 41 } 42 var subpaths = fs.readdirSync(asset_path), 43 subpath; 44 for (var i = 0; i < subpaths.length; ++i) { 45 if (subpaths[i][0] === '.') { 46 continue; 47 } 48 subpath = path.join(asset_path, subpaths[i]); 49 console.log(" subpath ", subpath); 50 var fname = getBundleName(subpath) 51 if(fname){ 52 stat = fs.statSync(subpath); 53 if (stat.isDirectory()) { 54 let dest_path = path.join(export_dir,fname) 55 file_util.mkdir(dest_path) 56 file_util.copyDir(subpath,dest_path) 57 file_util.delDir(subpath) 58 }else{ 59 var meta_name = subpath 60 var exportMeta_name = path.join(export_dir,fname)+'.meta' 61 setBundle(meta_name,opt) 62 file_util.copyFile(meta_name,exportMeta_name) 63 file_util.deleteFile(meta_name) 64 } 65 } 66 } 67} 68exchangeFiles(asset_path,export_dir,opt)

结语

以上是我在使用Creator2.4版本发布头条小游戏时遇到的问题及解决方案。方案可能那个有点笨拙,但是希望对遇到同样问题的小伙伴有所帮助,也希望如果哪位小伙伴有更好的解决方案可以分享出来。 如需完整脚本,请进入公众号回复 ”发布头条“ 获取网盘链接。

欢迎扫码关注公众号《微笑游戏》,浏览更多内容。如果您觉得文章还可以,点赞、在看、分享、赞助都是对我最大的鼓励,在下将感激不尽。

微信图片_20190904220029.jpg

欢迎扫码关注公众号《微笑游戏》,浏览更多内容。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )