62. 2023-05-28周总结

  1. 篮球项目转小程序
  2. ParticleForUGUI问题

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】资源释放
    【 】音频修改
    【 】打包小程序测试
    【 】图片压缩
    【 】优化性能

过程中的问题

  1. Shader找不到问题
    历史原因,这块代码不太好同步,写的时候直接用Shader.Find来做,但是会找不到,将Shader放到Unity Graphics配置中解决

  2. Mono找不到问题
    加载某个预制体的时候出现大量Mono找不到问题,暂时还没定位到原因

  3. UI异步打开中,又调用关闭的问题
    UI因为是异步加载,有可能加载中的时候又调用关闭,这时候关闭会不成功,之后的打开的加载回调了又会被加载出来,加了一个closing的flag把问题解决。这种就是典型的同步改异步加载会出现的问题。

  4. Task.Delay问题
    WebGL不支持Task.Delay,表现得效果就是await不会返回,且没有任何错误。Task系列函数WebGL有些支持有些不支持,不知道有没有某个地方能汇总下这些函数。

  5. 看不见堆栈问题,开启异常全部日志
    调试得过程中发现有个报空就只有一行文本,不知道哪里有错,修改这个设置之后打出来的包就能看到消息错误堆栈了,但会影响性能和包体,所以release不能开。

ParticleForUGUI问题

美术用3D特效做了一个扫光特效,然后发现放到UI里面没有扫光效果。我们用的是ParticleForUGUI来把3D特效集成到UI里面的。测试过程中发现ParticleForUGUI会自动关闭3D粒子的Render,而我们的扫光效果用了一个Custom Data,如果Render关了,就不会把Custom Data数据发送给Shader,导致扫光失效了。搜了下相关issue,发现已经有人提问了,但是也没给出一个比较明白的解决方案,所以先放弃继续走这条路,扫光改用UIEffect来实现。