Qt_Unity_PC_SDK总结_第三章.md 3.5 KB

之前章节,在对应目录,是生成了,qt dll 相关依赖文件

![[Pasted image 20240803153822.png]]

然后,需要在Unity工程,对应目录,生成以上qt相关的dll和依赖文件,先确认qt工程,所在目录;

![[Pasted image 20240803153858.png]]

在它的上一级的上一级,创建一个Unity工程,基于Unity 2019.3.6

![[Pasted image 20240803153915.png]]

![[Pasted image 20240803153952.png]]

创建完成后,记得把Unity工程关了,不然通过qt生成或者修改dll文件的时候,有可能会出现,占用的情况; 回到qt,注释之前的Output相关; 然后设定一下,dll的生成目录,是上上级,对应Unity工程的对应路径,需要注意的是,如果文件夹不存在,也会自动生成文件夹;

![[Pasted image 20240802154203.png]]

重新点击,构建按钮

![[Pasted image 20240802154414.png]]

可以看到,dll和文件夹,都顺利创建出来

![[Pasted image 20240803154117.png]]

复制所在路径

![[Pasted image 20240803154129.png]]

循例,基于64位MinGW编译器环境,cd和跳转盘符,抵达对应的文件夹

![[Pasted image 20240803154210.png]]

然后 windeployqt 完成依赖的自动生成

![[Pasted image 20240803154243.png]]

重新打开Unity工程,创建 JustTest 测试脚本

![[Pasted image 20240802154834.png]]

using 引用命名控件,还有 Serializable 可序列化类 InitData 也是包含,传递给qt的相关数据体;

![[Pasted image 20240802154900.png]]

通过DllImport的形式,写的是,对应dll的前缀名字,其中的方法,是在qt中export出来的Invoke触发器方法,再定一个enum枚举,包含Init和Quit俩元素,分别是初始化和退出SDK相关;

![[Pasted image 20240802155040.png]]

通过一个静态布尔isInit判断,是否已经初始化,最开始的时候,设置为false即可

![[Pasted image 20240802155444.png]]

再弄俩回调,也是分别对应,初始化和退出的,其中OnInit初始化回调,是会把上述静态布尔,设置为true,判断为,初始化成功;

![[Pasted image 20240802155408.png]]

在Start开始函数中,完成传参使用的,json数据体构建,然后Invoke触发,Init初始化,还有绑定回调OnInit;

在OnApplicationQuit退出函数中,也是根据isInit判断,Invoke触发qt sdk的Quit退出函数即可;

![[Pasted image 20240802155542.png]]

这样直接挂载脚本,运行unity的话,是会报错的,因为Unity.exe缺少qt相关的dll组件; 之前自动生成qt dll的时候,有一个qwindows的dll,需要复制拷贝到,Unity引擎所在目录;

![[Pasted image 20240803154318.png]]

复制拷贝后:

![[Pasted image 20240802160230.png]]

![[Pasted image 20240802160255.png]]

回到Unity,测试脚本挂载到,相机上

![[Pasted image 20240802160314.png]]

运行Unity,可以看到,加载qt相关dll,初始化的log回调,是正常的

![[Pasted image 20240802160353.png]]

初始化回调,对应qt的log输出,一致

![[Pasted image 20240802160631.png]]

然后,开始弄,硬件信息相关,参考[[Windows WMIC命令使用详解]] 先在这个目录,创建一个WMIC文件夹

![[Pasted image 20240803154504.png]]

然后,在该目录下,创建一个空白txt文件

![[Pasted image 20240803154531.png]]

修改文件后缀为pri

![[Pasted image 20240803154544.png]]

回到pro工程文件,添加include引用,保存修改

![[Pasted image 20240802161530.png]]

等待编译完成,可以看到,空白工程,就正常被引用进来了;

![[Pasted image 20240802161618.png]]