快过年了啊,提前祝大家新年快乐!
手里的项目告一段落,这两个月连续做了四个密室逃亡类游戏,做的我想吐。还有一周的班就过年了,新项目又没得开,就决定让我一个人划着小船向oppo小游戏靠拢一下,走一下流程。我还是很开心的,因为又可以接触到新的东西了,不用再去做那个让我反胃的密室逃亡了。
第一时间肯定是去找开发文档,打开creator的一瞬间,虎躯一阵,竟然要升级creator版本。
我用的版本还是1.9.2的,不是不愿意升级,之前2.0刚出的时候我就升上去了,结果之前的一个项目说需要改动,我把项目导进2.0,蹦出来的错误有点多,而且那个项目正好是我自己用到了摄像头,到2.0摄像机的机制改变不小,于是乎项目就有点崩。所以我就又把版本退回来了。
但是这一次不得不升版本,虽然还是1.9.2的项目,升上去也没改动多少,看来之前因为摄像机的原因,我错怪了creator。项目升上去主要改动的一点就是事件传递的参数方式。在1.9.2中,我通过emit发送事件的时候带过去一个参数,像这样:
node.emit("SEND_MSG",{msg:1});
我在其他地方使用同一个节点监听这个事件:
node.on("SEND_MSG",this.callfunc,this);
callfunc(event){
cc.log(event.detail.msg);
//在1.9.2我可以获得参数 event.detail.msg,但是在2.0.7版本中,这里就会报错
//也就是说event.detail = undefined 直接用event.msg就可以正确接受传递的值。
}
还有一点就是关于音频的,在1.9.2中我定义一个音效,直接 clickMusic:cc.AudioClip,就可以了,但是在2.0版本中,会发出警告,需要加上default:null。不加也不会出错,只是警告每次都要在控制台弹。
项目升级没有问题了,就准备打个包,oppo的小游戏是个rpk的包,creator内填入包名,游戏名版本号,使用默认的秘钥库构建一下就可以了。creator打好的rpk包在build下的quickgame下的dist文件夹里。
下载安装oppo调试器,解压的runTime.apk拖到手机存储下,然后在手机上去文件管理找到这个安装包安装到手机上。
我用的oppo测试机有两个存储空间,
oppo官方文档写的是sdcard下新建games文件夹,然后将打好的rpk放进去,在调试器中刷新一下就能看到自己的包。我就在SD卡下新建了一个games,然后放了rpk进去,作死的刷新找不到,我以为手机没反应过来,重启手机,重启电脑,重新打包,就是刷新不出来。也怪我自己蠢,看了文档写着sdcard根目录,就没想过在那个叫内部存储设备里边新建个games试一下,手动捂脸。
值得一提的是oppo提交正式包的时候是要自己使用openssl生成签名的,默认的秘钥库只用于调试。
openssl http://slproweb.com/products/Win32OpenSSL.html,根据自己的机型下载安装,配置环境变量。
creator官方文档提供的生成两个.pem文件的代码:
openssl req -newkey rsa:2048 -nodes -keyout private.pem -x509 -days 3650 -out certificate.pem
就可以在你当前打开的目录下生成两个文件。但是在调试器中打开用自己生成的文件打的rpk会提示安装包打开失败,有已经成功上线oppo小游戏的告诉我说他和我遇到了一样的问题,调试的时候一直用的默认调试库,上线的时候打一个自己生成签名的包给过去,也没有出现问题,可能是调试器有问题,不能调试自己生成签名的包。
(req是证书请求的子命令,-newkey rsa:2048 -keyout private.pem 表示生成私钥(PKCS8格式),-nodes 表示私钥不加密,若不带参数将提示输入密码;-x509表示输出证书,-days3650 为有效期,此后根据提示输入证书拥有者信息;)