回到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]] 参考样式语法: ``` css 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]]