- 博客(39)
- 资源 (1)
- 收藏
- 关注
原创 【C++】常用技巧
文章目录static int* (*const p[])();i += !!i枚举位运算static int* (*const p[])();p是一个函数指针静态常量数组,即p是静态成员变量,p的成员是函数指针且不能修改p的数组成员指向。p的成员函数指针指向的是空入参、返回值是int指针的函数。i += !!i若i为0,则!i为1;若i为非0,则!i为1。所以,若i为0,!!i为0;若i为非0,则!!i为1。所以,此表达式的含义是当i为0或无效(NULL)时,i不变;若i当前值有效(非0)时,则加
2021-08-19 18:06:48
588
原创 【UE4】共享(智能)指针用法
文章目录一、基本概念二、UE4智能指针1. TSharedPtr2. TSharedRef3. TWeakPtr4. TUniquePtr5. TSharedFromThis一、基本概念在UE4中,继承UObject的类被实例化的对象在内存中可以被UE4的垃圾回收机制管理,从而不用担心内存泄漏等问题。但非继承UObject的普通C++类或结构体则需要被开发者管理,如果管理不善,很容易导致内存泄漏、野指针和程序崩溃等问题。对此,我们可以使用UE4提供的共享指针来创建和管理这些类对象。C++的stl库中也提
2020-07-31 21:33:52
9248
原创 【UE4】编辑器开发(七)模型导入与映射
文章目录一、导入模型二、将新导入的模型渲染在视窗中一、导入模型我们创建一个结构体,取名为FNewMesh,通过这个结构体导入模型和保存路径。所以,我们需要先在CustAsset中声明这个结构体并暴露给属性面板。USTRUCT(BlueprintType)struct FNewMesh{ GENERATED_BODY()};UCLASS(Blueprintable, Bluepri...
2020-07-10 12:14:57
1752
原创 【UE4】编辑器开发(六)自定义预览视口
文章目录第三章第5节 3分38秒FEditorViewportClient-FPreviewSceneSEditorViewport创建两个类,分别继承FEditorViewportClient和SEditorViewportFEditorViewportClient子类public: FCustAssetViewportClient(FPreviewScene& InPr...
2020-07-10 12:14:07
7721
7
原创 【UE4全反射松耦合框架笔记】第二章 框架结构搭建
第二章 框架结构搭建文章目录第二章 框架结构搭建一、框架介绍二、仿QT打印功能一、框架介绍框架目录:二、仿QT打印功能
2020-07-10 12:10:53
706
1
原创 【UE4】反射系统分析(二)
文章目录INCLASS_NO_PURE_DECLSENHANCED_CONSTRUCTORS这节主要分析一下generated.h文件中的代码。首选先创建一个继承AActor的类,并编译,UHT会生成一个generated.h文件。下边来分析一下AActor类中的GENERATED_BODY()宏的作用。#define BODY_MACRO_COMBINE_INNER(A,B,C,D) A##B##C##D#define BODY_MACRO_COMBINE(A,B,C,D) BODY_MACRO_C
2020-06-19 01:02:04
1102
原创 【UE4】反射系统分析(一)
文章目录反射的宏标记反射数据UHT和UBT反射的宏标记 在编写UE4 C++代码时,我们经常使用UCLASS()、USTRUCT()、UENUM()、UFUNCTION()、UPROPERTY()等宏去标记我们的类和成员变量,只有添加这些宏的类或成员才能将其添加到反射系统。这样,基于UE4反射的GC系统等可以管理我们的反射数据。举例而言,当一个继承UObject的类对象指针被声明时,如果不使用UPROPERTY将其标记,则GC不能察觉到它的存在,也就不能对其进行管理。当GC认为没有其它对象包含该对象的
2020-06-15 18:24:03
1681
原创 3D图形数学基础(二)向量
文章目录一、向量二、向量运算一、向量零向量大小为零的向量为零向量负向量向量变负,会得到和原向量大小相等,方向相反的向量。二、向量运算向量的模(向量大小)0=[00...0]0 =\begin{bmatrix} 0 \\ 0 \\ ... \\ 0 \\\end{bmatrix}0=⎣⎢⎢⎡00...0⎦⎥⎥⎤...
2020-05-15 00:58:40
1875
原创 3D图形数学基础(一)坐标系
文章目录一、常用坐标系1. 笛卡尔坐标系2. 极坐标系二、建立坐标系1. 世界坐标系2. 惯性坐标系3. 物体坐标系4. 坐标系嵌套5. 摄像机坐标系三、坐标转换一、常用坐标系1. 笛卡尔坐标系 两条垂直数轴相交于一点构成的坐标系称为2D笛卡尔坐标系,而三条数轴两两垂直并相交于一点构成的坐标系称为3D笛卡尔坐标系。对于2D笛卡尔坐标系来说,某一...
2020-04-23 15:18:00
3474
原创 【UE4】编辑器开发(四)属性面板(Details)拓展
文章目录一、自定义类的属性面板二、自定义类属性设置一个蓝图类会有一个属性面板,即Details面板。在编辑蓝图类或实例化蓝图类后,都可以编辑这个Details面板,下面第一节就是介绍如何自定义此面板内容。当一个蓝图类声明一个蓝图变量时,其Details面板会出现对应的属性设置,如何自定义这个属性设置的内容和样式就是第二节的内容。下图是一个蓝图类的属性(Details)面板,其中的CustomC...
2020-04-20 00:19:09
5886
原创 【UE4】编辑器开发(三)资源类型拓展
文章目录创建一个继承UObject的类,类名UNewAsset创建一个继承UFactory的类包含UnrealEd模块UFactory构造器和实现FactoryCreateNew抽象方法UNewAssetFactory::UNewAssetFactory(){ bCreateNew = true; bEditAfterNew = true; SupportedClass = UN...
2020-04-20 00:11:56
2987
1
原创 【UE4】编辑器开发(二)ContentBrowser拓展
文章目录Viewport选中Actor的右击菜单栏拓展项ContentBrowser菜单项测试一下关卡编辑器的各个ExtenderViewport选中Actor的右击菜单栏拓展项//获取Level Editor模块FLevelEditorModule& LevelEditorModule = FModuleManager::LoadModuleChecked<FLevelEd...
2020-04-13 13:38:09
3423
原创 【UE4】编辑器开发(一)关卡编辑器拓展
文章目录一、菜单栏或工具栏中创建子项二、菜单栏拓展项创建下拉菜单三、菜单拓展项1. 创建分隔栏2. 创建分割线3. 创建子下拉菜单4. 添加其它拓展项自定义UI输入框四、工具栏拓展项一、菜单栏或工具栏中创建子项在StartModule中创建拓展项://加载LevelEditor模块,LevelEditor模块负责的就是打开UE4编辑器首先映入眼帘的各个编辑窗口。其中包括菜单栏、工具栏、视窗、...
2020-04-12 19:58:58
4808
原创 【C++】Mutable关键字
mutable关键字是一个少用的关键字。而mutable的含义与const正好相反,当一个类的成员变量不能修改时,我们在其声明处前添加const关键字进行修饰。但是,如果这个成员变量是可变的,那我们就使用mutable关键字修饰变量类型。但我们会发现一个问题,那就是不使用const修饰的变量本身就是可以修改的,那为什么还要添加mutable关键字呢?这里涉及到一个用法,也是关于mutable的最...
2020-04-05 15:07:52
5031
原创 【UE4】SaveGame存储系统
SaveGame存储系统文章目录SaveGame存储系统一、SaveGame对象二、存储、加载方法使用SaveGame存储游戏到本地的逻辑和方法都很简单,涉及两个部分SaveGame对象,以及存储、加载方法。下面我们一一讲解。一、SaveGame对象首先,我们要创建一个继承USaveGame的类。我们需要在这个类的实例中保存需要持久化到磁盘的游戏数据,然后调用存储方法,将其写入磁盘。所以,...
2020-03-30 18:20:17
5006
1
原创 【UE4】插件与模块
文章目录一、什么是插件与模块二、创建插件三、插件目录介绍四、配置文件1、插件2、模块3、项目五、创建模块1. 插件中创建模块2. 项目中创建模块六、模块加载与卸载七、插件封装一、什么是插件与模块模块是实现某一个或一类功能的集合,当模块足够独立和庞大、复杂之后,可以将其提升为插件。UE4引擎就是由众多模块组成,而插件也可以包含一个或多个模块,但模块却不能包含插件。相对于模块来说,插件具有更高的独...
2020-03-30 18:18:44
3539
4
原创 【UE4】资源管理之UAssetManager用法
UAssetManager用法文章目录UAssetManager用法一、PrimaryAsset和SecondaryAssetUAssetManager通过名字就可以了解,这个类是对资源进行管理。一般情况下,UE4会自动加载与卸载资源,但是如果开发者(就是我们)想更精确地掌控资源发现、加载与审核的时机与方法,那这个UAssetManager就可以上场帮忙了。下面,我们一步一步解析,这个UAss...
2020-03-24 18:22:41
6049
原创 【UE4全反射松耦合框架笔记】开篇与目录
UE4全反射松耦合框架笔记笔记说明《UE4全反射松耦合框架笔记》系列是根据梁迪老师的《UE4全反射零耦合框架开发坦克游戏》中的知识点所做的总结,并对其中一些知识点进行修正和补充说明。此笔记作为自己学习与总结,如有错误,望指出,谢谢。目录第一章 UE4框架基础UE4框架基础(上)UE4框架基础(下)第二章 框架结构搭建框架介绍仿QT打印功能模组生命周期枚举匹配模组结构注册对象...
2020-03-13 15:52:59
978
1
原创 【UE4全反射松耦合框架笔记】第一章 UE4框架基础(下)
第一章 UE4框架基础(下)文章目录第一章 UE4框架基础(下)六、反射应用详解七、资源同步、异步加载八、异步加载UClass类型九、LatentAction潜在事件六、反射应用详解常用反射宏UCLASSUSTRUCTUENUMUPROPERTYUFUNCTION通过反射获取实例的函数StaticLoadClassStaticLoadObjectLoadClassL...
2020-03-13 14:47:03
1901
原创 【UE4全反射松耦合框架笔记】第一章 UE4框架基础(上)
UE4框架基础文章目录UE4框架基础一、蓝图与C++交互一、蓝图与C++交互在蓝图中创建变量时,有四个选项可供选择:与C++对应的就是:AActor*TSubclassOfTSoftObjectPtrTSoftClassPtr...
2020-03-09 16:23:25
1929
原创 【UE4笔记】各种Delegate委托的区别和应用
文章目录UE4委托单播委托声明单播委托将函数绑定到单播委托UE4委托委托的基本类型有三种:单播委托多播委托动态委托单播委托单播委托指只能绑定一个函数指针的委托,也就是当执行委托时只能触发一个唯一绑定的函数。单播委托可以绑定一个无返回值或有返回值的函数。//无返回值函数委托声明DECLARE_DELEGATE(DelegateName); //无参DECLARE_DEL...
2020-03-05 15:54:25
10051
4
原创 【C++基础总结】函数
C++基础总结:变量和基本类型文章目录C++基础总结:变量和基本类型一、函数基础二、参数传递三、返回类型和return语句四、函数重载五、特殊用途语言特性六、函数匹配七、函数指针一、函数基础二、参数传递三、返回类型和return语句四、函数重载五、特殊用途语言特性六、函数匹配七、函数指针...
2020-02-27 18:34:55
273
原创 【UE4基础】对象创建与资源获取
对象创建与资源获取文章目录对象创建与资源获取一、对象创建与销毁1. 纯C++类的创建与销毁2. UObject及其子类创建与销毁3. AActor及其子类的创建与销毁二、Component创建1. 构造器中创建组件2. 其它函数中创建组件三、资源获取1. 构造器中加载资源2. 其它函数中加载资源一、对象创建与销毁1. 纯C++类的创建与销毁创建: 对于纯C++类(这里指非继承自UObjec...
2020-02-26 12:33:57
1240
原创 【C++基础总结】异常处理try-catch
C++基础总结:异常处理 try-catch文章目录C++基础总结:异常处理 try-catch一、简单介绍二、标准异常三、定义新异常类一、简单介绍异常处理涉及三个关键字:try:try代码块包含可能报错的代码语句,当代码出现错误后,将抛出异常。其后跟一个或多个catch代码块,用于捕获抛出的异常。catch:捕获抛出的指定异常,其包含的代码可记录异常或尝试解决异常。throw:当程序...
2020-02-26 10:54:03
437
原创 【C++基础总结】基本内置类型
C++笔记——基础篇:变量和基本类型文章目录C++笔记——基础篇:变量和基本类型一. 基本内置类型1. 算数类型2. 类型转换3. 字面值常量一. 基本内置类型C++基本数据类型为算数类型和空类型(void)。算数类型包含字符、整数型、浮点型和布尔值。1. 算数类型算数类型分为整型(包括字符和布尔值)和浮点型。类型含义最小尺寸bool布尔类型未定义cha...
2020-02-25 15:10:39
697
原创 【UE4】C++编程笔记(一)
【UE4】C++编程简介UPROPERTY()宏如何使用属性说明符UFUNCTION()宏如何使用属性说明符Gameplay类UObjectAActorUActorComponentUStruct引擎工作方式虚幻反射系统说明符传送门对象/Actor迭代器内存管理和垃圾回收UObject和垃圾回收Actor和垃圾回收UStructs非对象引用类命名前缀数字类型字符串FStringFTextFName...
2019-04-25 18:48:56
3149
1
转载 Cookie/Session机制详解——如何区分不同用户
转载博文, 原文地址会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session。 1.1 Cookie机制在程序中,会话
2017-10-17 22:09:47
1852
原创 html5 canvas自适应
问题背景:用canvas绘制图表,遇到了canvas不能自适应的问题,本来打算用css样式来解决,但可能因为canvas重绘问题,用css样式只能缩放显示图表导致失真,所以要解决这个问题,需要用js来重绘图表,至少我是这么解决的,可能会增加一些开销,但我觉得这种开销可以忽略。 如有错误,还望批评指正!解决思路 1. 载入页面时,根据浏览器尺寸加载图表 2. 当页面尺寸改变时,移除图表,重新绘制
2017-10-14 16:17:48
5209
原创 RaspberryPi树莓派远程文件管理
前期准备连接树莓派 用过树莓派的人应该都用过SSH来远程登录树莓派,那么,SSH不光可以用来远程控制你的树莓派,还可以进行文件管理,作为一个远程假FTP服务器,手动滑稽! 我用PC开发程式,然后用树莓派去测试和执行,中间需要进行文件传输,本来想在树莓派搭建一个ftp服务器的,不过太过麻烦(我比较懒,哈哈),如果你有这样的需求,可以浏览一下此文档啦! 如解释有误,还望批评指正!**
2017-10-04 00:12:51
2851
原创 RaspberryPi树莓派安装中文输入法Fcitx
网上有很多关于树莓派安装中文输入法的教程,这里再做几点补充,也是我之前遇到的一点问题。参考文章:[给树莓派安装中文输入法Fcitx及Google拼音输入法](http://shumeipai.nxez.com/tag/%E8%BE%93%E5%85%A5%E6%B3%95 "树莓派实验室")安装Fcitx打开Fcitx设置输入法右键单击键盘图标单击configure然后点击窗口左下角的号
2017-09-30 13:19:47
14208
5
原创 RaspberryPi树莓派安装MySQL并远程登录
Mysql的安装设置远程登录的权限修改配置文件重启完成命令提示 网上有很多mysql的安装以及远程登录,但linux上新的软件将配置文件进行了拆分,所以,这个笔记或教程的主要内容就是修改哪一个配置文件,以实现远程登录Mysql的安装因为我没有登录root账户,所以使用了sudo1.更新apt-getsudo apt-get update2.安装mysqlsudo apt-get ins
2017-09-15 19:56:00
4101
原创 如何合并/删除磁盘分区
如何合并磁盘分区注:这里是合并或恢复非系统分区一、打开磁盘管理器二、删除分区分区删除后蓝色顶框会编程黑色未分区状态三、新建(重新)分区完成之后,在我的电脑打开分区格式化分区Well done!
2017-08-31 15:39:35
3785
1
原创 编写第一个Hibernate应用程序
编写第一个Hibernate应用程序编写第一个Hibernate应用程序Eclipse安装Hibernate插件Eclipse安装Hibernate插件插件下载地址: 点击下载 插件环境要求: Java 8 and Eclipse Oxygen 4.7 插件安装 拖动Install按钮到Eclipse界面
2017-08-23 22:28:38
427
原创 [Mybatis错误集锦] 如何解决两张表中字段相同冲突问题
问题描述表结构查询的xml映射问题解决方法解决方案修改代码问题描述表结构 t_employee表(员工表) t_department表(部门表) 查询的xml映射 EmployeeMapper.xml <resultMap id="BaseAndDepartmentResultMap" type="cn.comman.crud.pojo.Em
2017-08-09 15:26:52
1473
原创 python ‘str’ does not support the buffer interface解决办法
python ‘str’ does not support the buffer interface解决办法问题背景 使用Requests来获取网络数据 response = request.get(url) 当将输出数据或将数据写入文件时,出现错误 with open("output.html", "wb") as file: file.write(re
2017-07-28 21:29:07
2271
原创 修改和校正树莓派时间
修改和校正树莓派时间修改和校正树莓派时间修改时区查看树莓派时间修改时间添加国内可用ntp服务器修改时区 输入以下代码,然后键入回车 sudo dpkg-reconfigure tzdata 选择亚洲时区 选择上海时区 查看树莓派时间 date 修改时间 校正时间 sudo ntpd -s -
2017-07-25 10:37:48
37583
原创 没有显示器情况下,安装和使用树莓派
没有显示器情况下,安装和使用树莓派没有显示器情况下安装和使用树莓派操作系统安装前期准备软件下载烧录系统笔记本电脑远程连接树莓派前期准备启动RaspBerryPi使用PuTTY连接树莓派使用电脑远程连接树莓派进行可视化操作手机或平板远程连接树莓派前期准备连接说明其它说明操作系统安装1. 前期准备 8G以上sd卡一张 读卡器(因购买的读卡器没有到,所以我暂时用旧手
2017-07-24 21:54:37
61863
10
原创 Mybatis的初次使用及配置文件
Mybatis的初次使用及配置文件Mybatis的初次使用及配置文件前期准备开发工具编写步骤创建数据库和表并添加记录创建一个Java项目并导入jar包创建Mybatis-configxml并配置文件创建一个Employee实体类创建并配置EmployeeMapperxml创建测试类执行测试类前期准备 Mybatis jar包 (Github地址 最新下载地址) JD
2017-07-23 12:37:53
1202
原创 [Mysql]查看mysql默认密码
重新安装Mysql 或者重装linux服务器后,第一次进入mysql后,需要输入default密码才能进入数据库。查看默认密码的命令: cat default.pass
2017-03-29 13:08:18
35925
1
CustDetails.zip
2020-04-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人