之前的章节,已经把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崩溃检测]]