Qt_Unity_PC_SDK总结_第九章.md 4.5 KB

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