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

131 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

开始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]]