3D技能系统优化
体验链接: http://gameview.creator-star.cn/iwea/skill
1.0 特效加载优化
优化粒子贴图尺寸
目前特效第一次加载的时候会需要去加载解析特效里用到的texture。
建议小游戏控制特效贴图的分辨率大小控制在128x128-512x512以内,特效使用的贴图尽量复用,节省内存和显存。
粒子Mesh优化
建议尽量使用减面后的mesh做粒子特效。
以Cocos自带的球体为例,减面前
减面后
减面后可以优化粒子渲染时间
GPU和CPU资源互换
目前小游戏和休闲游戏的瓶颈在CPU偏多,建议粒子材质都是用GPU材质,由于GPU材质不支持重力参数,需要使用重力的粒子效果,可以使用GPU材质+ForceOverTime 的curve去模拟
使用burst 去创建多个粒子
使用较多的粒子避免重复创建,可以使用burst的重复次数+间隔,在单个粒子内重复生成,确保合批。
多个图案合图加textureanimation随机
常用的雪花,岩石效果可以用一张贴图合图,使用textureanimation 随机不同的图案,减少粒子数量
混合mesh使用
部分常驻的效果可以使用mesh+uv动画模拟,减少粒子开销,这里使用的是动画编辑器,数量较多可以使用instancing+instancedarribute 控制。
粒子预加载
在资源加载阶段,可以把粒子提前实例化好,丢到天上或者视野外播放,由于部分粒子有start delay,会有播放延迟,这里统一是0.65s后播放然后回收。保证第一次使用技能不会因为贴图加载解析造成卡顿。(也可以直接使用prewarm,需要记录下延迟,然后还原再回收)
** PR **
3.7版本有粒子性能的优化,二喵也提交了一个小PR
https://github.com/cocos/cocos-engine/pull/13615
2. 角色优化
当技能砸中角色时候的时候,角色会设置边缘光作为反馈。
这里使用了自定义的材质,使用了引擎自带的unlit+边缘光+溶解效果+阴影, 并通过instancedarribute 控制材质效果。
溶解和instancdarribute都通过MeshCtrl脚本进行控制。
使用的时候,可以获取MeshCtrl Class,使用tween来控制溶解范围。
3.伤害文字合批优化
所有的伤害文字都挂在了血条下面,全部使用了bmfont,减少drawcall。这样只需要血条跟随角色位置,做一次本地空间坐标转换即可。
AOE效果伤害文字演示
4.降帧
游戏中粒子特效较多,这里把game.frameRate 降低到了30FPS,每帧有更多的时间处理开销
5.钝帧和屏幕震动
游戏开始的时候overwrite了director.tick,每次释放技能都会通知相机屏幕震动(这里是整体缩放放大,部分技能也可以设置上下震地的效果)和钝帧(减慢游戏时间),减少玩家的卡顿感知,通知增加游戏打击感。
*这里修改的是整体的缩放,也可以单独tween x轴或者y轴
震动和钝祯都通过配置文件获取
6 物理优化
这里物理使用了引擎自带的BuiltIn,追求性能的也可以考虑Bullet物理引擎或者自己封装树结构的碰撞检测,技能的碰撞体尽量选用球类,检测性能最高。
7.连击优化
连击写到了配置文件,技能只会检测一次(需要持续检测可以加一个碰撞体离开参数)
8.音效优化
为了避免同一个音效集中播放,可以使用轨道音效,控制音效数量,也可以记录播放时间,比如击中音效,这里做了50ms的播放限制,避免50ms内重复播放一个音效。
效果预览::
体验链接: http://gameview.creator-star.cn/iwea/skill
商店地址 :炫酷技能管理器 | Cocos Store
!福利!: 随机抽3个评论的 发放商店兑换码(按楼数发放喔) 80L截止!
我是1楼,恭喜12楼7楼71楼的同学
peng13123pfas
sptrssitu7
Change96674742528
私信以上大佬!恭喜!