60. 2023-05-14周总结

  1. 完善客户端框架
  2. Unity内存泄漏提示,但没有堆栈
  3. UnityWebRequest导致报内存泄露提示
  4. MissingMethodException: Default constructor not found for type
  5. Ai画图研究
  6. 显存报错问题
  7. 特效不显示问题

1. 完善客户端框架

  • 仿MotionFramework进行模块化
    将底层及扩展组件模块化,上层可以按需加入需要的模块

  • 日志功能封装
    监听Unity日志接口,将日志写入到文件,同时支持上传最新的部分日志到服务端,方便查看问题

  • 单例功能
    将单例进行分类,全局单例(不与GameObject挂钩)、全局Unity单例(挂在Dont Destroy GameObject上),Unity场景单例(挂在普通Scene的GameObject上)

  • 替换3D项目客户端部分已有模块(网络,单例,事件)
    用新的客户端框架替换3D项目已经在使用的一些模块,包括网络,单例,事件等等,慢慢的会把用到的MotionFramework都替换了

2. Unity内存泄漏提示,但没有堆栈

在完善客户端框架的时候发现个Error,报有内存没Dispose。

这个是我开启之后的报错提示,一开始是没有这么详细的堆栈的,只显示(A Native Collection has not been disposed, Enable Full Stack xxx)

查了下如何开启详细堆栈

这个库好像被弃用了,PackageManager搜索不到,需要从git安装

3. UnityWebRequest导致报内存泄露提示

第二条显示堆栈之后,发现堆栈显示在使用UnityWebRequest里面,原因是我用调用UnityWebRequest.Post的时候第二个参数传了个值进去,导致创建的Request自动创建了一个UploadHandler

使用UnitWebRequest.Post(url, "");即可解决问题

4. MissingMethodException: Default constructor not found for type

打出来的包,运行到使用Activator.CreateInstance<T>()创建模板对象的时候报MissingMethodException: Default constructor not found for type,这种一般就是导报的时候对应的代码被裁剪掉了,在link里面加一下即可。

5. Ai画图研究

研究了如何训练自己的lora模型,主要参考的就是b站这两个视频:
(1)https://www.bilibili.com/video/BV1Z841137ft/?spm_id_from=333.337.search-card.all.click
(2)https://www.bilibili.com/video/BV1Z841137ft/?spm_id_from=333.337.search-card.all.click

训练时候比较重要的点就是:

  • 分辨率要比较高
  • 描述关键词要准确且要描述重点学习的内容

6. 显存报错

3D项目部分性能较差的手机经常出现卡死现象,表现就是画面会来回闪

但是游戏内部逻辑还在正确跑,没有报错。

连接电脑查看日志发现有报Adreno-GSL: <sharedmem_gpuobj_alloc:2736>: sharedmem_gpumem_alloc: mmap failed errno 12 Out of memory错误,看着像是显存不够了。尝试把图片大背景禁用掉之后,现象就不会出现了,但这不是合适的解决方案,后续需要把大背景进行切图,然后进行动态加载或者卸载来解决问题。之前也出现过一次大图片在某些情况下不显示的问题,应该也是显存不够了。

7. 特效不显示问题

这周又出现特效不显示问题,原因是之前出现过的Mesh没有勾选Read/Write Enable,但之前出现的时候会报一个Warning,这次没有报。

把特效不显示的问题总结一个文档,以后出现的话方便排查。