随笔分类 - UE4_27
官方文档学习
摘要:UE中的TEXT() UE中使用TEXT()包含字符串后,将字符串转换为宽字符,其将被处理为支持Unicode和跨平台兼容性,而普通类型的字符串为一个窄字符类型,可能在跨平台出现问题。 最主要的问题是在FString的构造函数中是接受TCHAR的 所以对于FString FName FTEXT的构造
阅读全文
摘要:插件 UE中的插件就相当于一个模块,在引擎界面点击创建新的插件后,会在项目文件夹中生成插件的文件夹,在该文件夹内,只需要像游戏项目一样编写插件逻辑,最后在插件选择界面开启该插件即可 当新建插件后,UE会自动生成继承于IModuleInterface的类,说明该文件夹的内容为插件。 在InsideUE
阅读全文
摘要:TMap中的Find和FindRef 在对蓝图节点 进行C++重写时,发现UE对于TMap的Find有很多方式。 首先是基础的Find,其就是返回对象类型的指针,如果不存在于TMap中其会返回nullptr 接下来是FindChecked,其返回的是对象类型的引用,并且会在内部检测指针是否为空,如果
阅读全文
摘要:数组 DiscoveredTileIndexed 和 DiscoveredTileSortingCosts 这两个数组是用来存储遍历的方格的,DiscoveredTileSortingCosts存储的是每个方格的消耗,DiscoveredTileIndexed存储的是每个方格的位置即(x,y)。 D
阅读全文
摘要:寻路 就是对图的遍历,目前主要处理对可转换为二维矩阵的方格图遍历 DFS 与 BFS 两种最基础的遍历方式,DFS采用回溯思想,将从起点开始沿着一个方向搜索,直到超出界限(回溯)或者到达目的地(返回结果) //只考虑上下左右四个方向 vector<vector<pair{int,int}>> res
阅读全文
摘要:DataTable中的数据 DataTable中每一行数据是一个结构体 在C++代码中定义结构体,然后可以在蓝图中可以创建以此结构体为单元的DataTable 枚举变量 定义一个头文件来存储枚举变量,然后可以在要使用的文件中利用 MyEnumPtr = FindObject<UEnum>(ANY_P
阅读全文
摘要:构造函数 由于Widget是由UE的反射系统创建的,其生命周期由UE引擎管理,所以并不存在构造函数,UE为Widget类定义了两个虚函数NativeConstruct 与 NativePreConstruct来充当构造函数的作用。而这两个函数的调用都必须在Widget被实例化之后才能进行调用 如何在
阅读全文
摘要:说明 学习一下如何将Widget蓝图与C++连接起来,将处理逻辑写在C++中 基础 在蓝图中,我们显示Widget是通过一个Actor或者PlayerController,甚至关卡蓝图,利用Create Widget以及 AddToViewPort使得Widget显示在屏幕上的 所以在C++中也是一
阅读全文
摘要:定时器Delay 在头文件中需要声明TimerHandle和功能函数,功能函数是计时结束后执行的功能 在源文件中利用GetWorldTimerManager()实现定时器的开启(绑定功能函数)和清除。 //.h //自动开火的定时器 FTimerHandle FireTime; //定时器的开始绑定
阅读全文
摘要:主要实现蓝图节点中时间轴的功能。 目前UE提供了两种实现方式,一个是使用FTimeLine其是一个时间轴的结构体;另一种方式是使用UTimeLineComponent,其是一个时间轴组件类。两者内部定义的函数基本一样,组件类中使用这个结构体变量作为类中的成员变量。 声明一个时间轴变量/组件 FTim
阅读全文
摘要:官方链接 目的 不同Actor对象具有同一个功能,比如角色按F键可以实现开门,开车,与NPC沟通等操作。其本质就是让所有的Actor对象除了继承UObject以外,再继承这个接口类。 接口的声明 宏的改变:UCLASS -> UINTERFACE 父类的改变:UObject -> UInterfac
阅读全文
摘要:虚幻社区中有蓝图教学视频 使用C++重构,主要用到UGameplayStatics类中的SetGlobalTimerDilation方法,以及角色的相机管理器的调用,之后通过StartCameraFade方法实现显示效果 UE4中的时间膨胀 参考 全局方法:SetGlobalTimerDilatio
阅读全文
摘要:参考 定时器在全局定时器管理器(FTimerManager类)中管理,对于每个实例Uobject和场景都会有全局定时器管理器,一般来说通过SetTimer和SetTimerForNextTick来设置定时器。SetTimer具有loop属性。 访问使用定时器 AActor类对象:直接使用GetWor
阅读全文
摘要:通过关卡蓝图调用 在关卡中放置一个Actor,在关卡蓝图中右键 create a reference to actor,即可 注意使用该方法创建时,需要现在关卡中选择上该类Actor 当Actor生成时创建其的引用 当我们在蓝图中利用SpawnActorfromClass生成Actor 节点返回值拖
阅读全文
摘要:链接 该文档主要通过学习自己构建文件,形成GamePlay模块。下图是利用引擎创建的一个空模板C++代码结构 简要流程 UBT 虚幻编译工具(UBT:Unreal Build Tool)是一个自定义工具,负责管理通过各种编译配置来编译虚幻引擎4(UE4)源代码的过程。该工具处理所有复杂的项目编译工作
阅读全文
摘要:对官方文档的学习链接 利用UE创建一个C++基类 在编辑器中可以选择父类,根据这个父类我们可以创建一个基类用于后续的蓝图类制作。 以Actor父类为例创建基类,其头文件会包含一个构造函数,一个Tick函数的重载和一个BeginPlay函数的重载。 BeginPlay函数告诉Actor以可运行状态进入
阅读全文
摘要:教程 方法 调整相机视野和弹簧臂的长度 //自带的tick函数内 需要使用DeltaTime if (bZoomIn) { ZoomFactor += DeltaTime / 0.5f; } else { ZoomFactor -= DeltaTime / 0.5f; } ZoomFactor =
阅读全文
摘要:本文内容为UE4.27的文档教程 GameMode确定 新建的项目会自动生成GameMode,如果有更改,而不是使用默认的GameMode类,就需要在引擎的设置中更改 角色的实现 前后左右移动 //前后 MoveForward void AFPSCharacter::MoveForward(floa
阅读全文
摘要:跟随B站视频学习 准备工作 一个角色蓝图类用来设置AI角色,一个Blackboard--AI的大脑,一个AITree--AI的行为控制,一个AIController蓝图类--定义AI的控制器。 是否发现角色 首先需要在Blackboard中定义Bool变量是否发现角色。 然后在AIControlle
阅读全文
摘要:自定义事件,和委托其实是一类操作。 在蓝图中都表现为红色方块。 自定义事件通过DECLARE_EVENT(ClassName, EventName)来创建一个属于ClassName的EventName事件。可以看出一般是没有参数的,如果蓝图中或者C++代码中自带的BeginPlay. 自定义事件 而
阅读全文