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

4.4 KiB
Raw Permalink Blame History

回到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