4.4 KiB
回到core源文件,添加log相关的,头文件引用
在初始化的时候,就调用Logger的初始化,设置日志级别、日志颜色,还有log日志信息,输出到logs文件中;
core头文件,声明多一个ShowLog函数,是用来显示,日志信息窗体的,还有Debug枚举,是对应显示,调试窗体的
core源文件,对应函数实现,如果已经存在窗体,直接修改一下显示相关即可; 否则,就新建实例化一个DebugDialog窗体;
在Invoke触发函数中,会通过Unity传递过来的枚举,调用显示log窗体
构建dll,重新生成,会自动覆盖Unity中的dll文件
回到Unity C#
脚本,加一个Debug的枚举
写一个对应Debug的Callback回调
写一个OnGUI函数,需要确认,已完成加密验证,才会显示log面板
运行游戏,点击按钮,Log面板显示正常
开始弄UI,先创建UI文件夹
循例,创建一个txt文本文件,修改后缀pri
在pri文件中,添加路径的引用关系
回到dll.pro项目文件,添加UI相关引用
保存修改,引用正常
UI子项目,添加新文件
添加C++相关文件
命名为ShadowDialog即可
对应头文件,声明中,包含信号初始化,设置阴影、透明度、窗体铺满,绘制事件相关; 私有变量中,包含一个透明度相关,还有一个显示特效相关,参考Qt图形特效:QGraphicsDropShadowEffect;
源文件,对应的头文件,引用关系,需要注意的是,会用到core里面的,调用附加窗体相关,因为阴影和透明效果,需要覆盖铺满,整个附加窗体; 还有窗体移动,也会通过core里面的信号,触发全面积透明阴影的重绘操作;
源文件中,设置显示特效,还有alpha透明度相关的,函数实现;
fill函数实现,是基于core获取到的,附加主窗体,对应的屏幕尺寸; 基于该尺寸,使用qt内置的setFixedSize函数,完成屏幕尺寸的设置和适配,参考qt中setFixedSize和resize的区别,半悬浮效果的实现; 然后,调用clientToScreen 函数 (winuser.h)完成坐标移动和设置即可;
paintEvent绘制事件,是基于设定的m_alpha透明度,对窗体完成绘制
构造函数中,设定m_alpha透明度是0.6,也可以根据实际情况修改; 然后,通过setWindowFlags和setAttribute设定,qt的窗体属性; 再通过各个api接口,设置显示特效相关,包含模糊半径、颜色、偏移; 再调用,信号的初始化和铺满屏幕即可;
新建一个UI,进行测试
打开ui编辑器,拖曳frame组件
设置一下,frame的最大和最小宽高相关,这样就可以固定大小了
再设置一下测试frame的qss
参考样式语法:
QFrame
{
background-color: yellow;
}
就会是黄色背景了
再拖曳一个pushbutton按钮,作为frame背景的子物体
再设置一下,根节点的宽高属性
头文件,设置测试UI,是继承自ShadowDialog阴影dialog的
源文件,主要是设置,按钮点击,触发UI的accept信号,关闭窗体即可