2022-11-27周总结

这周主要做了两件事情,一个是卡牌项目的Shader整理,另外一个是足球项目的微信小游戏

Shader相关

  • 项目中的一些Shader用的比较奔放,要么自己写,要么直接用Standard。
  • 整理了项目中模型展示用到的Shader,主要有两类Shader,会多光源影响,不受光源影响;这两类Shader还需要支持不带透明度,带透明度以及Cutout版本。标准化了后续模型展示Shader的用法
  • 整理了现在项目中用到的后处理Shader,目前是三种后处理(高光,模糊,合并),并解决了一个Unity Shader的坑
  • Shader这一块还剩特效和战斗模型用的Shader还没整理,后续再慢慢补上并标准化

微信小游戏问题

Unity转微信小游戏一直问题比较多,最大的问题就两个

算力问题

我们游戏是一个足球游戏,每一周会计算5大联赛的所有赛事,App版本下计算在1s左右还能接受,所以没有过多的进行优化。但在小程序上因为不是原生性能,计算耗时会达到3s以上甚至一些差的机型到10s这就不太能接受了。

目前我们的做法是几个方面

  1. iOS开启高性能模式(不开根本没法玩,但开了会增加内存)
  2. review代码,减少一些内存分配的情况
  3. 减少内存场数
  4. 增加交互体验(算的时候不要卡住界面,增加等待中提示),这就需要把之前的同步计算改成异步(比如协程)的方式

1已经做了;2代码量比较大,容易改出问题是一个长期过程;3做了,但目前方案只对新用户友好一些,只能治标但不治本;4的话目前感受上来说虽然没减少计算时间(甚至可能还增加了)但是体验会好很多

内存问题

除了算力,内存也是一个比较头大的问题,Android的小程序还好,IOS因为内存本来就不大,内存限制的比较死,经常出现运行内存不足提示

目前我们按照官方插件做了下面几点之后有了一定改善:

  1. 音频适配优化
  2. 资源管理工具对用到的图片进行了压缩,比如之前1024大小压缩成512
  3. 设置Unity Heap内存,我们游戏设置在300

后续准备进行的优化:

  1. 代码分包
  2. 纹理压缩

相信做了这些以后内存还会进一步改善

项目转小程序以来也踩了比较多坑,同时也有一些经验,包括

  1. 资源不能放在Resource,并且使用异步加载资源,这里推荐下我们项目用到的资源管理开源插件YooAsset还是比较好用
  2. 存档问题,不能使用C# File接口
  3. 网络问题,不能使用C# System.Net下的接口
  4. 输入框问题
  5. 小程序缓存问题,例如我们用到的YooAsset用了.bytes作为版本检查,所以这个后缀的文件不能被小程序缓存

后续有时间的话可以总结下微信小程序的一些问题。

另外,Unity转小游戏插件的文档很齐全,这些在他大文档里面都有提,如果有遇到问题,就去翻翻文档兴许就能找到相关解决方案。