自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ZhangjieZzJ的博客

将自己学习的过程记录下来,争取早日成为大佬。

  • 博客(31)
  • 收藏
  • 关注

原创 UE4自定义资源和编辑器(五):添加操作节点的通用命令

编辑器图表添加通用命令在之前创建的编辑器中,复制、粘贴、删除节点的操作无法完成,翻看蓝图编辑器和行为树编辑器,发现需要给编辑器添加FUICommandList类用于管理通用命令。为了方便,直接令我们的状态机编辑器继承一个FAIGraphEditor,该类封装了对节点操作的常用命令。StateMachineEditor.hclass STATEMACHINEEDITOR_API FStateMachineEditor : public FWorkflowCentricApplication, pu

2021-03-24 10:24:54 2236

原创 UE4自定义资源和编辑器(四):添加图表节点

添加节点类添加节点样式类添加工厂类

2021-03-22 10:59:13 2133

原创 UE4自定义资源和编辑器(三):添加图表页签

简介GraphTab是编辑器可以创建节点和编辑节点的页签(Tab),如蓝图编辑器、行为树编辑器和动画蓝图编辑器中的图表。我们的目标是实现类似动画状态机这样的图表,也是我们主要参考引擎代码的地方。文件结构如下:创建图表相关类StateMachineGraph表示页签中的图表对象,继承自UEdGraph。StateMachineGraph.hUCLASS(MinimalAPI)class UStateMachineGraph : public UEdGraph{ GENERATED_B

2021-03-04 18:35:37 1873 2

原创 UE4自定义资源和编辑器(二):创建自定义编辑器

介绍我们添加了一个UStateMachine的自定义资源,现在我们在创建一个FStateMachineEditor的编辑器类来编辑这个资源。UE4中任何的编辑器都是由一个个Tab(页签)组成,由编辑器中的TabManager管理。StateMachineEditor打开后会和蓝图编辑器类似,有默认的菜单栏和工具栏。有图表和细节面板,这里菜单栏、工具栏、图表、细节面板都是页签。我们先创建只有默认菜单栏、工具栏、和细节面板的编辑器,后面再详细介绍图表页签的创建。创建编辑器类首先创建一个FStateMac

2021-03-03 18:24:06 4133 2

原创 UE4自定义资源和编辑器(一):创建自定义资源

介绍实验版本:4.25游戏开发过程中,有时候需要自定义自己的资源,并通过自定义的编辑器进行编辑。这时候就需要参考引擎中的蓝图、动画资源、音频、行为树等资源的编辑是如何实现的。这里通过创建一个StateMachine的自定义资源来说明,最终实现跟动画状态机类似的效果。创建相应插件建议新建一个插件,方便项目之间移植。插件需要包含运行时模块和编辑器模块。新建一个StateMachine的插件,目录结构如下:// StateMachineModule.h:class FStateMachineMod

2021-02-18 19:26:26 2966

原创 UE4中的委托和事件

介绍官方文档介绍委托本身是一种特殊对象委托可绑定任意对象的函数委托是一种观察者模式,当委托执行时,通知所有绑定到这个委托的对象定义委托类的宏可以在DelegateCombinations.h查看,这里只暂时了无参数的宏。这些宏用于声明和定义一个委托类。#define DECLARE_DELEGATE( DelegateName ) FUNC_DECLARE_DELEGATE( DelegateName, void )#define DECLARE_MULTICAST_DELEGATE( D

2020-12-24 10:09:15 5638 2

原创 UE4对象的创建与销毁(UObject,Actor,ActorComponent)

简介在C++中,创建一个对象可以分为两种方法,在栈中创建或在堆中创建。//一:在栈中分配 int num = 3;//二:在堆中分配,需要手动delete释放 int* num = new int(3); delete num;UE4使用的C++,追根溯源还是上面两种方法。AActorUActorComponentUObjectUStruct原生C++对象...

2020-11-06 20:36:36 17471 3

原创 UE4中的位掩码(Bitmask)的介绍和使用

简介环境:UE 4.25位掩码(Bitmask)位掩码是一串二进制数(比如子网掩码),每一位是一个Flag,表示一种状态,一个32位的位掩码就可以表示32种状态的组合。如果期望使用多个bool变量共同作用与同一个地方,就可以使用位掩码来实现。使用位掩码是为了控制一组bool变量,用一个变量就可以表示丰富的状态。使用枚举是为了给每个Flag命名,增强可读性。位操作由于位掩码是使用二进制来表示一个Flag,所以最常使用的操作就是位运算:与(&)、非(~)、或(|)、异或(^)、左移(&

2020-10-21 20:23:44 4602

原创 UE4 常用的基本类型,以及字符串、枚举、结构体

整型由于int, short, long在不同平台上可能是不同的,常用以下几种,:uint16 Num;//无符号uint32 Num;//无符号uint64 Num;//无符号int16 Num;//有符号int32 Num;//有符号int64 Num;//有符号浮点型支持C++标准类型float Speed=2.0f;double Speed=2.0;布尔型U...

2020-10-20 17:41:37 1487

原创 UE4中的模块(module)介绍

简介官方文档:https://docs.unrealengine.com/zh-CN/Programming/Modules/Gameplay/index.html实验版本:UE 4.25一个UE4游戏项目中包含引擎内容和游戏内容,我们可以使用引擎代码、引擎插件代码、游戏代码、游戏插件代码来实现游戏中的各种功能,UE4使用模块的概念(Module)来进行代码组织,从而将不同的功能划分在比较小的粒度当中。新建一个MyProject的UE4项目,打开VS解决方案文件(.sln),可以发现由Engine

2020-10-19 20:07:16 8495

原创 UE4中的GameplayTag:使用层级概念标签来管理对象

简介:GameplayTag原本是用在GAS(GameplayAbilitySystem,技能系统插件)中,但是现在出现在UE4默认类型中,明显GameplayTag可以用在其它很多地方。与Actor Tag或Component Tag等字符串类型的Tag不同, GameplayTag更像是与Category一样具有层级结构,因此可以用作识别、匹配、分类或过滤对象。优点:使用概念标签给对象快速归类,便于管理。缺点:完全由用户自定义,需要设计一个好的分类结构,才能发挥作用。详细说明可查看官方说明文

2020-10-14 20:06:33 5391 4

原创 C++源文件的编译流程简介

概述C++\C源文件,包含.c, .h, .cpp, .hpp等格式的文件,经过预处理、编译、汇编、链接后,形成可执行文件,也就是.exe文件。预处理预处理阶段主要有三个方面的内容: 1.宏定义; 2.文件包含; 3.条件编译。最后产生.i文件。1. 宏定义又叫宏替换、宏代换,就是宏体替换宏名。例:#define PI 3.14把程序中全部的标识符PI换成3.14。2. 文...

2020-10-12 20:42:46 2743 1

原创 dll和lib的区别和使用

简介lib(静态库,library):lib分为两种,一种是通常意义上的静态库,里面是函数实现代码;还有一种是导出库,配合dll使用,实现隐式调用。两者都是用于静态链接,在生成目标模块后,lib文件就没有用了。dll(动态库,dynamic link library):dll用于动态编译,调用dll的程序本身只有导出函数的声明,而将实现过程放到dll中,这样dll就可以提供给多个程序使用,大大减少了程序体积,是实现代码复用的重要手段。编译的时候不需要dll,运行时却必不可少。总之:lib相当于代替cp

2020-10-10 18:19:04 3039

原创 # 问题:UE4 game module ‘xxxx’ could not be loaded

使用VS编译后报错出现如下图所示问题,解决方法如下。 打开工程时出现报错某些含有C++的工程打开时可能会报错,如下图:可以尝试重新生成vs解决方案目录,在VS中重新编译一下。...

2019-10-16 19:29:47 3154

原创 sourcetree的操作记录

Git操作记录通过sourceTree使用Git操作记录变基 Rebase拉取时勾选,会将远程分支的所有更改应用到本地。如果有更改必须提交 或储藏 。贮藏返回上一次提交时的状态,贮藏所有未提交的更改。当拉取有冲突时可以使用。应用更改到当前工作副本。回滚提交反向提交会多一次提交记录,用于取消修改提交和推送修改文件后会显示到提交按钮上。丢弃,只能丢弃...

2019-09-30 12:29:45 2250

原创 Git使用记录,在source提交和推送UE4项目

之前将别人创建的远程空仓库clone到本地上,添加文件提交,然后推送的时候发生如下错误。最后是通过创建者添加README.md文件解决的。但是在自己创建的远程空仓库上完成相同的操作时,没有发生这个错误,看来是账户权限的问题。push时的错误当远端的有新的提交领先于本地上一次拉取时,无法将本地新的提交直接推送到远端。解决方法就是在push前先pull一下,这也是我所在项目开发中要求的。...

2019-09-30 12:25:13 2005

原创 UE4蓝图中设置结构体的成员变量

之前一直觉得自己在蓝图中设置结构体的方式比较麻烦,是不是自己打开的方式不对,后面在官网上找了一下,果然如此。这是我之前在蓝图中设置结构体的错误方式,当结构体相当膨胀的时候就呵呵了:正确的做法,使用SetMember节点,暴露自己需要改的变量:问题来了,这样设置transform中的一个变量是否也是我打开的方式不对?因为tranfrom不会膨胀,这样也是可以接受的。...

2019-09-29 12:20:30 3910 1

原创 # UE4 动画混合时间Blend in和Blend out测试

Montage Blend 设置Blend In和Blend Out默认都是发生在当前Montage内。Montage Stop(InBlendOutTime):在BlendIn和NormalPlay触发会直接按参数InBlendOutTime混出,而在BlendOut触发不会有反应。GetPosition:只能得到BlendIn和NormalPlay的时间。??IsMon...

2019-09-09 10:14:37 4165

原创 C++位操作简单总结

简介位运算是直接对二进制数进行操作,运算速度很快,在C++中,适当使用位操作可以解决一些特定问题和提高程序性能。基本位操作基本的位操作符有与、或、异或、取反、左移、右移这6种。符号位操作说明&与1 1 为1,其余为0|或0 0 为1,其余为0^异或相同为1,不同为0~取反0变1,1变0<<左移全部左移若干...

2019-09-07 14:52:45 480

原创 # UE4 智能指针

简介虚幻智能指针库为C++11智能指针的虚幻自定义实现,用于非UObject的数据对象。虚幻Objects使用更适合游戏代码的单独内存追踪系统,不适合用智能指针,请使用对象处理。智能指针类型TSharedPtr共享指针:共享指针拥有其引用的对象,防止该对象被删除,并在无共享指针或共享引用(见下文)引用其时,删除该对象。共享指针可为空,意味其不引用任何对象。非空共享指针可生成共享引用。...

2019-08-19 20:35:47 5194

原创 VS2017 C++解决方案和项目目录文件夹

1 新建VS2017 C++项目VS2017是通过解决方案来管理项目的,通常我们都是在项目上进行工作。解决方案项目1项目目录1(folder或者filter)项目2项目目录1项目目录2注:建议一个项目对应一个解决方案,并且项目和解决方案同名。VS2017在新建项目的时候,会创建一个解决方案来管理。会生成如下解决方案管理器视图。一个解决方案也可以添加多...

2019-08-16 09:44:29 12924 1

原创 UE4 C++ FString与其它类型相互转换

官方参考FString to Others//to boolStringVariable.ToBool();//to intFCString::Atoi(*StringVariable);//to floatFCString::Atof(*StringVariable);Others to FString//floatFString::SanitizeFloat(Floa...

2019-08-13 09:45:33 9621 1

转载 VS2017 C++控制台程序不用加"pch.h"

在VS2017中新建C++控制台项目时,会自动包含"pch.h"文件,实际上这个文件中没有内容,只是刷刷题的话这个是没有用的,但是删掉编译又会出错,可通过以下方式解决,在一些在线oj刷题提交的时候就比较有用了。...

2019-08-09 18:06:15 3531

转载 C++ using的用法

1. 使用命名空间使用整个std命名空间using namespace std;只使用std命名空间中的coutusing std::cout;2. 类型别名C++ 11中用来代替typedef,最大的好处是可以使用模板。//c++ 98typedef vector<int> NumVec;//c++ 11using NumVec = vector<in...

2019-08-09 11:34:44 1048

原创 UE4 在Tick中使用插值旋转物体,InterpTo系列

目标是使敌人始终面向玩家,但是又不能转得过于生硬,需要带点阻尼的效果。敌人朝向玩家:FindLookAt()使用findLookAtRotation(),通过输入的两个世界坐标得到一个旋转。实际上是调用如下的函数:KISMET_MATH_FORCEINLINEFRotator UKismetMathLibrary::FindLookAtRotation(const FVector&am...

2019-08-08 18:00:31 7912

原创 UE4 项目工程规范

github参考资源,项目文件夹,变量,函数,编程习惯。1. 资源1.1 基本命名规则Prefix_BaseAssetName_Variant_Suffix类型_资源名_扩展名(数字的话要用两位,如01)_子类型范例:Bob资源类型资源名SkeletalMeshSk_BobMaterialM_BobTexture(Diffuse/Albedo)...

2019-08-02 19:10:12 3096

原创 UE4 C++中找到蓝图中常用的函数

在蓝图中用的很熟的函数不知道放在C++中的什么地方。将鼠标放在函数节点上,出现详细信息,可以找到函数所在的类。在VS中找到类所在的头文件,如上面的静态函数就可以包含头文件直接使用了。...

2019-08-02 18:26:02 1294

原创 UE4 VS调试

第一种:附加到进程打开UE4编辑器VS中选择调试->附加到进程->UE4Editor.exe添加断点,运行游戏进行调试第二种:编辑器调试关闭UE4编辑器(也可以不关)选择DebugGame Editor,点击本地windows调试器进行调试,会重新打开UE4编辑器窗口(调试模式)可以愉快的添加断点,运行游戏进行调试了退出调试时会关闭UE4编辑器附:调试快捷...

2019-08-02 17:52:26 6804

原创 虚幻属性系统(反射)

简介:UE4使用其自己的反射系统来支持动态功能,如详细面板、垃圾回收、序列化、网络复制和蓝图/C++通信等。C++本身不支持任何形式的反射,所以UE4建立了反射来收集和操作有关C++类,结构体,函数,成员变量和枚举的信息。反射系统需要有如下头文件支持:#include "TestActor.generated.h"//以创建ATestActor为例,由UE4自动生成可以使用UENUM()...

2019-07-25 14:13:16 2058

原创 UE4 骨骼网格动画系统中的BlendSpace和AimOffset

UE4的骨架网格体动画系统(Skeletal Mesh Animation System)用来决定角色的动画,骨架网格体动画系统涉及多个资源格式和编辑器,具体内容可以参考官方文档,本文针对其中的两种动画资源——混合空间(BlendSpace)和瞄准偏移(AnimOffset)做入门级探讨。1 动画混合(Anim Blend)动画蓝图中的Anim Gragh(动画图表)中的节点通常是处理Ani...

2019-07-19 16:16:22 2360

原创 UE4 教程蓝图的使用

简介UE4的教程蓝图可以对一些功能简单的进行讲解,可以定位到编辑器中的一些控件,可以添加文字、图片、链接。注:教程蓝图功能简单,只能进行简单说明,不适合做复杂教程。创建教程蓝图在内容浏览器中点击Add New或右键点击空白处创建教程蓝图。编辑教程蓝图details窗口中有Tutorial和Stages两个Category。Tutorial中需要注意的是,如果是需要对某个Asset...

2019-07-19 12:00:54 1942

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除