cocos ceator 使用的坑和总结

    目前已经用creator开发了好几款游戏了,现在可以做一些总结了。

 1.关于预制资源体。进入游戏场景,预制资源中不能有太多的节点(比如sprite,spine......)。预制资源使用uuid等一系列手段绑定生成资源、调用等,在加载的时候去寻找、设置等等,会花费大量的时间。然而如果在start函数中去创建,使用的时间就会少得多。当然在编辑器命名的名字,在代码中也最好同名,方便你我他。

 2.关于数组资源。creator的拖拽调用太方便了,然后在属性设置里面弄个[cc.Node]数组或者其他,然后不停的拖,然而问题来,脚本掉了怎么办!真心会哭,所以使用这个方式少量的可以,比如5个,4个啊.....,太多了还是回归代码创建吧。这是其一,第二个就是不要存储不连贯的数据名,后果同上,并且其他人还不知道拖谁...。

 3.关于spine。如果spine中有多个动画,最好让特效妹纸们把默认spine的动画隐藏,程序方便使用setToSetupPose()函数来还原,做其他操作。当然spine导入项目后有些会出现展示的异常,把spine的premuliplie关掉试试。

 4.资源复用。游戏中不停的创建销毁,性能消耗也很大,把不用的资源.active=false掉,下次用到刷新的时候就设置true,更改其他属性等等。

 5.动画。经发现

for(let i=0;i<10;i++)
{
   node.runAction(xxxx)
}

10个node同时做动画+播放一个spine动画,居然有瞬间的卡顿....,引擎版本是1.4.2。

 6.googlebuffer。由于引擎组在后续版本中干掉了引用外面的node_modules,为了以后升级,所以在内部添加了googlbuffer的解析。在收数据后解析成对象后,JSON.stringify(data),data内部有些数据是读不出来的,怎么回事儿呢!因为他调用的不是系统提供的stringify方法,调用了googlebuffer内部的解析。所以在解析完成后将数据的属性转换掉类似data.property=Object.property,当然如果转换后的数据缺失少,可以在JSON.stringify(data)后加上需要的数据,毕竟最怕性能消耗!

 7.图片资源。老生常谈了,碎图搞成plist,如果不是对画质要求特别高,最好是压缩下原图,缩小包的体积。

 8.游戏启动时间长,黑屏长。过度动画

 9.关于shader。以前用shader弄了个高斯模糊,最后发现底层有spine的出现了黑块,弃!;如果游戏中万不得已要使用shader,算法一定不能太复杂。

 10.图片。很多时候想复用同一张图片做其他事情,比如用大图,通过等比缩放或者等比算size的大小来放小一张图片来使用,如果比例不是很大效果差距不大,如果比例大了,图片就会出现变形。结局是让美术重出吧!

 11.sequence是一个连续的播放动作,如果内部只有一个动作,会出bug

 12.repeat动画,子节点和父节点都使用的时候,小心!

 13.js的setTimeout和cocos的action混合使用,如果是连续的执行2次,并且在每次执行前都停止,会出现很奇怪的现象,猜测是setTimeout代码交叉出问题了(待定,慎用)。

 14.关于texture被load后,删除的问题,首先找到路径var absolutPath=jsb.fileUtils.getWritablePath()+图片name

    注意这里是路径+图片名字,不是路径+"/"+图片名字。getWritablePath()它本身就在最后加了反斜杠。

  

var texture= cc.textureCache.getTextureForKey(absolutPath)
if(texture){
   cc.textureCache.removeTexture(texture)
   cc.loader.release(absolutPath)
}

 这是1.9以前的,1.0或者2.0后的可能不一样。

15. 关于节点层级,同节点之间,如果node1的zIndex=1,在代码某个地方让node2.zIndex=1(以前的node2.zIndex=0)

,这样后在不同的平台有不同的表现。ios中,新设置的node2在node1的上面;android中node1还是在node2的上面;网页同ios。所以如果要让node2在node1的上面,设置node2.zIndex=2靠谱些

16.关于lable的RESIZE模式。如果字符串是不带空格或者是英文的一串,label的resize会不生效

17.在iphone上连续播放音效,后续音效可能播放不出来(特指,setFinishCallback函数),web和android都可以,可以让间隔时间长点

你可能感兴趣的:(cocos,游戏,总结)