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

4.1 KiB
Raw Permalink Blame History

开始cpp文件相关逻辑include引用相关的头文件 窗体信息相关先设置nullptr空指针参考nullptr 在Core的构造函数中设置一下字体是微软雅黑

!Pasted image 20240801205242.png

获取窗口标题的getWindowTitle函数实现根据qt HWND拿到对应的标题;

!Pasted image 20240801205711.png

设置一个TagWNDINFO结构体用在EnumProc全局函数枚举窗口判断是否为重复窗体

!Pasted image 20240801205805.png

全局函数GetProcessMainWnd是配合GetCurrentProcessId获取主窗体相关;

!Pasted image 20240801205941.png

继续全局函数CustomWndProc是根据不同的窗体case操作emit触发不同的信号后续用于窗口遮罩居中相关

!Pasted image 20240801210109.png

以上,完成了各种全局函数; 对应的initHWND初始化窗体相关通过枚举窗体调用主窗体完成窗体的初始化即可

!Pasted image 20240801210336.png

instanceCount函数实现后续是通过unity端传参过来设定最大的实例化sdk个数对qt子进程数量进行限制

!Pasted image 20240801210518.png

quit函数就是退出qt子进程相关对相关变量完成清理

!Pasted image 20240801210707.png

result函数是把一个json结构体的数据传参回给unity回调参考C++ strcpy_s的详细用法

!Pasted image 20240801211200.png

success和error分别是成功和失败的回调都是调用上述的result函数

!Pasted image 20240801211350.png

init初始化函数实现先通过initHWND函数判断窗体初始化是否正常然后通过传参过来的json数据体拿到最大的实例数量限制进行判断是否正常 进而调用success或者error回调

!Pasted image 20240801211531.png

invoke触发函数是通过传参判断是否为init初始化通过switch和case的方式调用对应init初始化函数还是调用对应的quit退出函数

!Pasted image 20240802111908.png 右键选择,添加新文件;

!Pasted image 20240802111604.png

选择只创建cpp即可

!Pasted image 20240802111636.png

是主函数入口命名为main.cpp

!Pasted image 20240803153143.png

主函数的入口是DllMain相关逻辑还有一个Invoke触发函数的导出在Unity端可以调用参考dllexport与dllimport的区别

!Pasted image 20240802112240.png

之前在创建项目的时候有默认创建dll和一个global相关的文件没有使用到直接删除即可删除后头文件和源文件目录如下

!Pasted image 20240802112558.png

回到.pro项目文件之前是配置了debug和release的输出目录

!Pasted image 20240802112453.png

先修改项目设置,不让其进行默认编译

!Pasted image 20240803153242.png

取消勾选

!Pasted image 20240803153255.png

确认是Release编译然后点击构建

!Pasted image 20240802112701.png

会有警告,但是编译成功;

!Pasted image 20240802112748.png

编译目录,也是跟.pro项目配置一致 但这只是最基础的编译结果,它对应的依赖,还需要加进来;

!Pasted image 20240803153426.png

根据首字母开头找到qt对应编译器的命令行模式这里也是64位

!Pasted image 20240802145428.png

复制所在路径

!Pasted image 20240803153444.png

cd 到这个路径,回车

!Pasted image 20240803153520.png

可以看到,还是在原路径

!Pasted image 20240803153557.png

敲击对应的盘符回车即可例如这里是在G盘G:

!Pasted image 20240803153626.png

就自动跳转到,对应的路径了

!Pasted image 20240803153642.png

windeployqt 指令是可以自动检索出qt相关的依赖文件不管是exe还是dll都可以的参考Qt库依赖的打包路径这里是dll文件tab补全名字即可回车

!Pasted image 20240803153712.png

自动检索完毕

!Pasted image 20240803153731.png

路径文件目录,也正常

!Pasted image 20240803153801.png