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

3.8 KiB
Raw Permalink Blame History

qt选择的版本是qt最后一个支持完全离线安装的版本5.14.2,需要注意的是,安装的时候,需要断网安装,才可以跳过,用户登录的步骤;

!Pasted image 20240801182425.png

unity选择的版本是2019.3.0

!Pasted image 20240801182626.png

首先打开qt如果要设置暗色模式参考Qt暗色模式即可; 需要注意的是如果后期涉及到复制依赖库相关的qt工程的路径不可以太深不然会出现预期之外的问题 这里创建新工程建议只存在三层子目录的qt工程举例说明G:\code\mine\目录创建即可; 打开qt开始创建新工程

!Pasted image 20240801182933.png

选择动态库文件;

!Pasted image 20240801183006.png

继续

!Pasted image 20240803152751.png

!Pasted image 20240801183047.png

!Pasted image 20240801183104.png

!Pasted image 20240801183115.png

选择在安装时候勾选的MinGW64位编译即可

!Pasted image 20240801183133.png

!Pasted image 20240803155344.png

先把一个QtWinMigrate相关的qt pri工程拷贝到根目录的同级目录具体内容参考QtWinMigrate即可;

!Pasted image 20240803152842.png

打开qt的pro文件先修改C++的编译配置版本

!Pasted image 20240801183834.png

然后设置编译路径分别是Output目录下的release或者debug路径分别对应不同的编译类型

!Pasted image 20240801184135.png

当下的选择Release即可

!Pasted image 20240801184237.png

通过这种形式可以调用外部的pri配置文件

!Pasted image 20240801184318.png

添加保存修改后等待编译完成可以看到对应的pri工程就已经被加入进来了后续如果是ui相关的也可以通过这种形式解耦

!Pasted image 20240801184541.png

右键,选择添加;

!Pasted image 20240801184913.png

加一个核心的C++类相关,命名为Core

!Pasted image 20240801184943.png

!Pasted image 20240803152944.png

!Pasted image 20240803153024.png

头文件include引用相关的其他头文件 然后调用了MFC相关的QWinWidget类还有声明一个Callback回调后续用于跟Unity的通信和交互 设置Core继承自QObject类再整一个instance单例模式 而Core的构造函数设置为private私有而且禁用隐式转换参考QT中的explicit关键字的作用

!Pasted image 20240801185836.png

对应修改一下cpp文件对于构造函数的调用

!Pasted image 20240801190447.png

回到.h头文件整一个KitApi枚举其中先包含俩元素用于初始化和退出SDK相关

!Pasted image 20240801195958.png

在头文件中,声明了几个,需要使用到的,私有变量; 其中m_callbackMap是用于存储和调用由unity传递过来的函数功能回调参考QMap使用详解即可; 后续几个私有变量都是跟windows窗体有关在这里就是unity应用程序对应的窗体参考qt HANDLEqt HWNDWNDPROC即可;

!Pasted image 20240801200701.png

然后,再声明几个,对应的私有函数; init是sdk初始化相关 result是用于回调相关是发消息回unity客户端的 instanceCount是用于初始化实例化qt sdk数量的设定 initHWND是用于初始化unity窗口相关信息

!Pasted image 20240801201829.png

再声明几个,公有函数,分别是用于,获取窗口标题,成功&失败回调函数触发invokesdk退出的quit打印的print 还有对应的callback回调getCallback剩下的也是跟unity窗体相关

!Pasted image 20240801202406.png

在头文件,再弄俩信号,分别是用于,后续窗体遮罩相关

!Pasted image 20240801203335.png