【学习记录贴】记录使用cocos时遇到的问题和解决办法

作为研发总是会遇到各种意想不到的情况,可能是个人功力不够,也可能是官方文档描述不详,等等。个人精力有限,用这个帖作为向官方的简单反馈,也作为个人补充,留给后来人。

表面着色器和传统着色器版本的toon着色器阴影效果不一样,非要使用传统着色器的话,可以修改CCToonShading函数,具体参考:https://forum.cocos.org/t/topic/156635/3?u=jingjiao

按文档“自定义几何体实例化属性”(https://docs.cocos.com/creator/manual/zh/shader/instanced-attributes.html) 操作,调用setInstancedAttribute可能实际不生效,可能的原因是:node还没有被激活(比如刚刚实例化后,还没将节点加入场景,就设置材质和setInstancedAttribute),解决办法是:确认先把节点addChild到父节点(触发节点的activeNode后),再调用instancedAttribute

如果需要在代码中向着色器传递游戏时间来和cc_time进行比较计算时,需要注意着色器中cc_time.x使用的是渲染器的积累时间“cumulativeTime”,所以要通过director.root.cumulativeTime获取,而不是game.totalTime

将node的active属性从false调整为active时,会导致在当前帧内对node更新的位置(setPosition)不生效(貌似会被重置为初始位置)。改为调整组件的enabled属性。