之前的章节,已经把miniblink相关的逻辑功能,写好; 回到core头文件,添加显示网页的ShowMiniBlink枚举,还有声明MiniBlink函数;
![[Pasted image 20240807120819.png]]
core源文件,include添加miniblink背景相关,头文件引用
![[Pasted image 20240807121109.png]]
对应的窗体调用,逻辑实现
![[Pasted image 20240807121305.png]]
Invoke触发函数中,通过case和枚举调用
![[Pasted image 20240807121411.png]]
开始构建
![[Pasted image 20240807121443.png]]
完成构建后,回到Unity,同名的,加上对应枚举
![[Pasted image 20240811174552.png]]
再加上对应的callback回调函数
![[Pasted image 20240811174652.png]]
在OnGUI中,加上按钮的触发和调用
![[Pasted image 20240811174729.png]]
运行游戏,点击
![[Pasted image 20240811174834.png]]
内置浏览器,功能显示正常,点击背后的ui按钮,即可关闭
![[Pasted image 20240811174914.png]]
开始弄打印相关,core头文件,之前是有声明print打印函数;
![[Pasted image 20240807220614.png]]
源文件,对应函数实现,首先调用Logger设置颜色,然后通过不同的case,触发不同的Log打印信息即可
![[Pasted image 20240807220656.png]]
在Main主函数,添加一个PrintLog的函数导出
![[Pasted image 20240807221145.png]]
构建
![[Pasted image 20240807221255.png]]
回到Unity端,导入对应dll的PrintLog函数,再调用几次
![[Pasted image 20240807221327.png]]
OnGUI中,按钮触发,打印测试
![[Pasted image 20240811175021.png]]
运行游戏,分别点击后,log信息打印正常
![[Pasted image 20240811175106.png]]
Unity,打开项目设置
![[Pasted image 20240814165057.png]]
![[Pasted image 20240814165122.png]]
确认一下,组织名称Company Name,当前是默认的DefaultCompany,后续测试Unity崩溃异常,生成的log文件和dmp文件,也是在,对应该路径下的Temp文件夹,生成;
![[Pasted image 20240814165146.png]]
崩溃信息相关文件夹子路径,还会包含,游戏标题
![[Pasted image 20240814173457.png]]
回到Qt,崩溃捕获相关,参考[[SetUnhandledExceptionFilter 函数 (errhandlingapi.h)]],在Core代码,cpp源文件中,需要引用和包含errhandlingapi.h
![[Pasted image 20240814173745.png]]
.h头文件中,加一个写入文件相关的,writeToFile函数声明,具体实现,参考[[qt文件写入IO测试]]
![[Pasted image 20240814173859.png]]
回到源文件,对应文件写入的逻辑实现
![[Pasted image 20240814174020.png]]
异常捕获的筛选器,初始化,设置nullptr空指针;
ApplicationCrashHandler函数实现,对应的是,dll附着的unity主线程,出现崩溃异常的时候,从windows的Temp文件夹下,拿到上述提及的,默认DefaultCompany文件夹,对应unity游戏名称子文件夹,包含的Crashes文件夹,其中会包含,报错的dmp文件,还有log日志文件相关;
获取到对应的路径dir_list后,通过writeToFile函数接口,写入到,对应的,自定义文本文件捕获异常.txt,然后quit退出sdk相关,再返回异常EXCEPTION_EXECUTE_HANDLER句柄
![[Pasted image 20240814174154.png]]
在Core的构造函数,完成注册,异常捕获函数即可
![[Pasted image 20240814203552.png]]
重新构建dll文件
![[Pasted image 20240814203732.png]]
回到Unity,也添加测试崩溃的OnGUI相关逻辑
![[Pasted image 20240814203931.png]]
运行游戏,先不点击,看看ui位置
![[Pasted image 20240814204208.png]]
开始编译
![[Pasted image 20240814204253.png]]
确认编译平台,先是PC的编译,点击按钮,添加相关场景,再选择64位编译方式
![[Pasted image 20240814204336.png]]
![[Pasted image 20240814204438.png]]
![[Pasted image 20240814204524.png]]
这时候,Unity应用程序的,相对路径,就已经改变了; 回到Unity引擎,复制这几个,需要使用到的,sdk相关配置文件;
![[Pasted image 20240814204616.png]]
粘贴到,编译后的exe程序路径
![[Pasted image 20240814204721.png]]
运行游戏,点击按钮
![[Pasted image 20240814204741.png]]
触发unity崩溃,文件生成,也是正常的
![[Pasted image 20240814204818.png]]
存储的文本路径,正常
![[Pasted image 20240814204843.png]]
![[Pasted image 20240814204911.png]]
![[Pasted image 20240814204920.png]]
如果要生成,pdb符号表文件,编译的时候,勾选即可
![[Pasted image 20240814204955.png]]
定位报错相关,参考[[windbg崩溃检测]]