65. 2023-06-17周总结

  1. 篮球项目转小程序
  2. Android P问题
  3. 自定义帧动画和特效配合问题
  4. 启动新项目

1. 篮球项目转小程序

  • 通用修改
    【x】删除不必要的插件(减少编译的wasm大小)
    【x】配置表改用二进制(减少GC,加快加载速度)
    【x】使用YooAsset替换Addressable(YooAsset用着更顺手,同时打包收集策略更好点)
    【x】静态图片和动态图片整理(图集比较乱)
    【x】动态图片懒加载(改动比较大,很容易出bug)
    【x】UI框架支持资源卸载

  • webgl修改
    【x】服务器和客户端支持websocket
    【x】打webgl包测试
    【x】Http访问方式修改(webgl不支持System.Net下的Http)
    【x】资源释放
    【x】音频修改
    【x】打包小程序测试
    【x】图片压缩
    【 】优化性能
    【x】优化wasm大小

上周按照优化思路:写脚本整理资源文件夹,一个界面的放在一起,公共的放在公共的地方做了之后整体提升还是比较明显的,目前勉强能玩了。后续再针对性的根据卡的界面再进行优化。

另外一个需要优化的地方是加载,目前加载只剩下一个配置表加载,但是因为表多,而且有些表比较大,所以导致加载耗时还是比较久的。有几种优化思路:

  1. 加载的时候只加载不parse,用的时候再parse(实际测试提升不大)
  2. 分散配置表加载,不如进入到主界面的时候只加载主界面用到的表,进入战斗只加载战斗用到的表(需要理清楚所有表的用的地方,如果理错比较容易出问题)
  3. 用的时候再加载,需要修改所有用到配置表的地方(同步改异步,容易出问题)

第三种是最彻底,但是会跟加载Sprite一样,改动会比较大,而且容易出问题。第二种对上层逻辑来说改动会比较小,如果表比较多的话一些小表加载可以直接归类到主界面,只对大表进行分场景加载,减少问题的出现。

转小程序遇到的另外一个问题:
在对接jenkins打包的时候发现打包会卡住,最终发现是卡在了await上,按照道理是不应该出现这个问题,最终发现导致只要在下面代码后面有await的话就会卡住,也就是重新去设置Unity的编译宏,这个暂时还不知道为啥,只能先把这个功能关了。

1
2
3
var oriDefine = PlayerSettings.GetScriptingDefineSymbolsForGroup(BuildTargetGroup.WebGL);
string finalDefine = oriDefine + ";" + macros;
PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.WebGL, finalDefine);

2. Android P问题

写了代码运行在低版本Android(Android 7及以下的时候)出现报错,Android P变量找不到,国内低版本Android可能会少,但是海外还是比较多的,所以查了下Android P的常量值,直接写死之后问题修复

3. 自定义帧动画和特效配合问题

为了省资源,我们自己写了一个带位移的帧动画,但是发现和特效那边配合上有点问题,特别是第一次进场景的时候尤其明显。

最后发现我们写的帧动画算法有点问题,我们的写法是每次存一个时间间隔,如果时间间隔大于一帧了则进行下一帧处理,并把这个这个时间间隔清0。这个写法会导致帧率不稳定,如果卡了帧率就会慢下来。所以优化了算法,开始播放的时候记录一个开始时间,每一帧的时候通过当前时间和开始时间的时间差计算当前应该是第几帧,这样帧率就不会受到卡顿影响了,跟特效的时间轴也衔接上了。

4. 启动新项目

因为小程序转换快接近尾声了,所以准备启动新项目,因为是CS模式的项目,所以决定用上我之前写的C#服务端,同时客户端也使用最新的框架。搭建的时候发现服务端还是少了挺多东西的,补充了一波现在基本流程可以跑起来了,后面发现了再慢慢填充。