Qt_Unity_PC_SDK总结_第七章.md 4.4 KB

回到core源文件,添加log相关的,头文件引用

![[Pasted image 20240806160602.png]]

在初始化的时候,就调用Logger的初始化,设置日志级别、日志颜色,还有log日志信息,输出到logs文件中;

![[Pasted image 20240806160656.png]]

core头文件,声明多一个ShowLog函数,是用来显示,日志信息窗体的,还有Debug枚举,是对应显示,调试窗体的

![[Pasted image 20240806160834.png]]

![[Pasted image 20240806161101.png]]

core源文件,对应函数实现,如果已经存在窗体,直接修改一下显示相关即可; 否则,就新建实例化一个DebugDialog窗体;

![[Pasted image 20240806160928.png]]

在Invoke触发函数中,会通过Unity传递过来的枚举,调用显示log窗体

![[Pasted image 20240806200948.png]]

构建dll,重新生成,会自动覆盖Unity中的dll文件

![[Pasted image 20240806161323.png]]

回到Unity C# 脚本,加一个Debug的枚举

![[Pasted image 20240806161505.png]]

写一个对应Debug的Callback回调

![[Pasted image 20240806161621.png]]

写一个OnGUI函数,需要确认,已完成加密验证,才会显示log面板

![[Pasted image 20240806161658.png]]

运行游戏,点击按钮,Log面板显示正常

![[Pasted image 20240806161853.png]]

开始弄UI,先创建UI文件夹

![[Pasted image 20240806182213.png]]

循例,创建一个txt文本文件,修改后缀pri

![[Pasted image 20240806183520.png]]

在pri文件中,添加路径的引用关系

![[Pasted image 20240806183605.png]]

回到dll.pro项目文件,添加UI相关引用

![[Pasted image 20240806192312.png]]

保存修改,引用正常

![[Pasted image 20240806192344.png]]

UI子项目,添加新文件

![[Pasted image 20240806192437.png]]

添加C++相关文件

![[Pasted image 20240806192526.png]]

命名为ShadowDialog即可

![[Pasted image 20240806192602.png]]

对应头文件,声明中,包含信号初始化,设置阴影、透明度、窗体铺满,绘制事件相关; 私有变量中,包含一个透明度相关,还有一个显示特效相关,参考[[Qt图形特效:QGraphicsDropShadowEffect]];

![[Pasted image 20240806192836.png]]

源文件,对应的头文件,引用关系,需要注意的是,会用到core里面的,调用附加窗体相关,因为阴影和透明效果,需要覆盖铺满,整个附加窗体; 还有窗体移动,也会通过core里面的信号,触发全面积透明阴影的重绘操作;

![[Pasted image 20240806193256.png]]

源文件中,设置显示特效,还有alpha透明度相关的,函数实现;

![[Pasted image 20240806193628.png]]

fill函数实现,是基于core获取到的,附加主窗体,对应的屏幕尺寸; 基于该尺寸,使用qt内置的setFixedSize函数,完成屏幕尺寸的设置和适配,参考[[qt中setFixedSize和resize的区别,半悬浮效果的实现]]; 然后,调用[[clientToScreen 函数 (winuser.h)]]完成坐标移动和设置即可;

![[Pasted image 20240806193706.png]]

paintEvent绘制事件,是基于设定的m_alpha透明度,对窗体完成绘制

![[Pasted image 20240806194248.png]]

构造函数中,设定m_alpha透明度是0.6,也可以根据实际情况修改; 然后,通过setWindowFlags和setAttribute设定,qt的窗体属性; 再通过各个api接口,设置显示特效相关,包含模糊半径、颜色、偏移; 再调用,信号的初始化和铺满屏幕即可;

![[Pasted image 20240806194340.png]]

新建一个UI,进行测试

![[Pasted image 20240806194639.png]]

![[Pasted image 20240806194706.png]]

![[Pasted image 20240806194721.png]]

打开ui编辑器,拖曳frame组件

![[Pasted image 20240806195720.png]]

设置一下,frame的最大和最小宽高相关,这样就可以固定大小了

![[Pasted image 20240806195836.png]]

再设置一下测试frame的qss

![[Pasted image 20240806195925.png]]

参考样式语法:

QFrame
{
background-color: yellow;
}

就会是黄色背景了

![[Pasted image 20240806200005.png]]

再拖曳一个pushbutton按钮,作为frame背景的子物体

![[Pasted image 20240806200052.png]]

再设置一下,根节点的宽高属性

![[Pasted image 20240806200146.png]]

头文件,设置测试UI,是继承自ShadowDialog阴影dialog的

![[Pasted image 20240806200250.png]]

源文件,主要是设置,按钮点击,触发UI的accept信号,关闭窗体即可

![[Pasted image 20240806200336.png]]