obsidian/笔记文件/2.笔记/Qt_Unity_PC_SDK总结_第九章.md
2025-03-26 00:02:56 +08:00

4.5 KiB
Raw Permalink Blame History

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