Cocos开发日志

最近用CocosCreator做了一个类avg的模拟经营游戏,并且使用微信开发者工具导入到微信小游戏平台,在这篇博客里纪录一下项目过程中遇到的问题及解决方案。
1:关于CC的预制件问题:CC的Prefab默认状态下不是自动同步的,也就是说,在场景的层级管理器里调整Prefab的属性,对另一个Prefab的实例不会有影响。当然也可以单独打开Prefab来编辑预制件。总之,预制件最好在做好之后再拖拽到其他场景,否则会比较麻烦。或者最好使用脚本的方式创建和销毁预制件。
2:数值条的制作:CC为开发者提供了一种便捷的制作方法,在cc.sprite的属性中,可以将精灵的type调为fill(填充)模式,通过设置参数,可以使精灵横向纵向或者是径向部分显示。然后可以通过变量动态控制fill模式下的fillstart和fillrange达到预定的效果。Cocos开发日志_第1张图片
3:切换场景的过场动画:查询资料后发现Coco2d为开发者提供了切换场景的效果,但是很遗憾的是,在CC中没有这个方法。于是我尝试用动画系统制作一个anim,然后设置为常驻节点在场景切换时播放,但是在设置常驻节点时遇到了问题。于是采取了一个比较极端的过场方式,在一个场景结束时播放上半段动画,在另一个场景开始时播放另外一段动画。由于切换场景的时间会非常不确定,所以采取一个场景载入时就同时预加载后续可能加载的场景,使场景切换的时间在可控范围内。然后播放上半段的动画时,使用一个schedule函数对加载场景的函数进行延时。通过调试使两段动画衔接地天衣无缝。
4:avg的核心逻辑实现:
//显示str的 函数

   public Display()
 { 
  var str1=this.str2;
       var j=0;
   var interval=0.1;
   var repeat =str1.length-1;
   var delay=0.1;
   this.schedule(function()
   {          
       this.content.string+=str1[j];
       j++;
   },interval,repeat,delay);
 }  

上面这个显示函数可以使文字像avg一样一个一个地蹦出来,但是有一个问题,在这个文字的计时器没有执行完时,如果再次执行这个函数,可能会出现“你你打打球球像像蔡蔡徐徐坤坤”这样的重叠字符。所以在再次执行这个函数时,不要忘了将计时器任务取消。
如何让策划编辑一个事件?策划有可能不会使用代码来动态创建和调用函数来生成人物图片和生成选项。我们需要创建一个事件编辑器,使策划在txt中就能通过一种语法,实现avg中各种动态功能和跳转。

  if(this.str[Indexindex].includes("(A"))
  {
    GlobalVars.A+=parseInt(this.str[Indexindex].split("(A",2)[1]);
    this.str[Indexindex]=this.str[Indexindex].split("(A",2)[0];
  }

类似这种,处理txt中的语法,实现一些功能。如果有充裕的时间,建议好好学习一下正则表达式。
5:打包发布中遇到的问题:
微信小游戏要求代码包每个最大4m,合计最大8m。其实即便我们写了上万行的代码,也远达不到4m,占资源的往往是一同打包的音乐,图片等资源。CC提供了配置远程服务器的设置,在项目构建里填写服务器地址,并且勾选上MD5 Cache

Cocos开发日志_第2张图片
构建后把build文件夹中的res文件夹删除即可。
6:一定要实机测试!
配置了服务器之后,如果一些图片和音乐过大,可能会下载延迟,导致音画不同步。需要对图片和音乐采取预加载,微信小游戏的论坛中,也有大神直接把音乐分成十秒一个的一系列片段,采取一定的逻辑依次播放来解决这个问题,总之见仁见智,这个问题不难解决。
在实机测试中,打开console,监测我们的程序在哪里需要优化,在代码中将运行速度尽可能地优化。

你可能感兴趣的:(CocosCreator)