UE4
文章平均质量分 52
UE4知识点总结
zzZZ20150101
分享自己学到的东西
展开
-
为2021年我立下的Flag
我今年29,作为一名新手老爸以及学渣游戏开发程序员。在这里立下关于2021年的Flag。2021年12月31日我再来回顾。每周看一部英语电影。 每周从之前的工作笔记中提炼至少三篇技术博客。 体重下降10斤。 还完外债。 放假时间积极分摊家务。 每个月泛读一本好书并且写一篇读书笔记将对此书最有深刻的观点记录。...原创 2020-12-31 14:57:51 · 174 阅读 · 0 评论 -
UE4碰撞体项目设置
路径:Edit=>ProjectSettings=>Engine=>CollisionObjectChannelsYou can have up to 18 custom channels including object and trace channels.你可以有多达18个自定义通道,包括对象和跟踪通道。If you delete an object type that is being used by the game,any uses of that type w原创 2021-08-23 17:43:57 · 1034 阅读 · 0 评论 -
UMG可见性
Widget 可视性有 5 种:Visible(可视): 可见、可点击HitTestInvisible(非可命中测试(自身和所有子项)): 可见、当前 Widget 不可点击、所有 Child Widget 不可点击SelfHitTestInvisible(非可命中测试(仅自身)): 可见、当前 Widget 不可点击、不影响 Child WidgetHidden(隐藏): 不可见、占用布局空间Collapsed(已折叠): 不可见、不占用布局空间(性能优于 Hidd...原创 2021-08-18 11:11:21 · 502 阅读 · 0 评论 -
UE4中的类型引用
前言UE4中存在4种引用关系 Object Reference Class Reference Soft Object Reference Soft Class Reference 下面分别介绍各自作用及优缺点Object Reference直接引用资源,也就是“硬引用”。其引用的类会自动被实例化加载到内存中。Class Reference对一个UObject的class的引用,C++中用TSubclassOf来表示。例如以下代码可指定该类只能是派原创 2021-08-11 14:11:41 · 1560 阅读 · 0 评论 -
UE4 CDO基础
介绍UCLASS宏为UObject提供了一个描述其基于虚幻的类型的UCLASS的引用。每个UCLASS都维护一个名为“类默认对象”的对象,简称CDO。 CDO本质上是一个默认的“模板”对象,由类构造函数生成。CDO是在引擎初始化时创建的,当引擎为每个类生成UClass对象时。每个UClass的实例都是在引擎初始化期间创建的,并被分配为该UClass的CDO。并且包含在反射系统中,如在编辑器可以操作类蓝图。Obj.cpp可以看到引擎CDO初始化创建。功能描述当在编辑器修改时如果是非默认值可以点原创 2021-08-11 14:11:14 · 2473 阅读 · 0 评论 -
UE4 富文本C++扩展应用
代码路径Runtime\UMG\Public\Components\RichTextBlockDecorator.h该文件有两个类URichTextBlockDecoratorUCLASS(Abstract, Blueprintable)class UMG_API URichTextBlockDecorator : public UObject{ GENERATED_BODY()public: URichTextBlockDecorator(const FObjec原创 2021-07-29 15:03:24 · 485 阅读 · 0 评论 -
UE4的Android打包指南
环境搭建 安装OpenJDK 安装Android Studio 安装NDK 安装Android SDK 打包操作步骤 选择需要编译的:Configuration:File=>Package Progect =>Build Configuration 选择目标生成项目:File=>Package Progect =>Build Target 选择支持的平台:File=>Package Progect =>Su原创 2021-07-14 10:08:21 · 195 阅读 · 0 评论 -
UE4烘焙
前言UE4引擎通过editor来创建和管理uasset,但是当游戏发布到不同的平台时需要根据平台转换为不同的格式。而这样的转换过程就叫作烘焙。分为三个步骤 加载包至内存; 为包中的每个对象生成目标平台特定数据 (Derived Data); 把含有平台特定数据的包另存到cooked目录 Loading Package类似于DLL中的导入、导出符号表,Unreal的Package也有一个导入(import)、导出(export)表。Import表示其依赖的在其他包原创 2021-07-13 15:36:01 · 876 阅读 · 0 评论 -
UE4-Redirects重定向
Redirect类型 ClassRedirects StructRedirects EnumRedirects FunctionRedirects PropertyRedirects PackageRedirects 重定向使用流程1.配置DefaultEngine.ini文件[CoreRedirects]+类型名=(OldName="OldName", NewName="NewName")2.重新打开引擎,打开对应引用的文件重新保原创 2021-07-06 14:50:09 · 800 阅读 · 0 评论 -
UE4读取ini文件代码示例
FString ConfigFilePath = FPaths::Combine(FPaths::Combine(FPaths::ProjectPluginsDir(), TEXT("Plugin/Config")), "DefaultConfig.ini");FString strTest;GConfig->GetString(TEXT("Test"), TEXT("strTest"), strTest, ConfigFilePath);配置文件内容[Test]strTest = "...原创 2021-07-06 14:27:25 · 795 阅读 · 0 评论 -
UE4模块设计
Public和Private目录存在的意义核心目的在于满足到处条件支持其他模块调用。因为模块内的代码默认是不导出给其他模块的,所以UE4约定:将需要到处的给其他模块使用的代码文件的头文件放在模块的Public目录。IncludePathModuleNames和DependencyModuleNames比较相同点:二者都能使本模块可以包含其他模块Public目录下的头文件,从而调用函数。不同点:IncludePathModule只能调用定义全部在头文件里的函数.Tip:*In原创 2021-07-01 10:11:10 · 361 阅读 · 0 评论 -
UE4插件开发
定义UE4引擎、UE4项目都是由各个模块组成的,而插件就是耦合性极低且独立性强的模块。插件目录结构 Binaries:编译后的dll Content:游戏资源Asset Intermediate:编译的中间文件 Source:代码存放位置 .uplugin文件:插件项目配置文件,JSON格式 .Build.cs:每个.build.cs中定义派生自ModuleRules的子类,设置属性控制器从构造函数进行编译的方式。有虚幻编译工具编译,并被构造出原创 2021-06-28 14:54:02 · 447 阅读 · 0 评论 -
UE4 Interface原理与使用
为什么要使用接口?在游戏开发过程中会出现某些游戏功能被各种不同的类共享使用的情况。所有这些类都需要共享功能但是它们却没有除UObject之外的共同上级。UE4中接口的编写方式UINTERFACE(Blueprintable) class UTestInterface : public UInterface { GENERATED_BODY() }; class ITestInterface { GENERATED_IINTERFACE_BODY()原创 2021-06-25 18:15:41 · 548 阅读 · 0 评论 -
UE4定时器简单使用
获得定时器FTimerManager timerManager = pWorld->GetTimerManager();定时器句柄FTimerHandle timerHandle;定时执行委托FTimerDelegate timerDelegate销毁定时器timerManager.ClearTimer(timerHandle);开启定时器//间隔时间单位为stimerManager.SetTimer(timerHandle,timerDelegate,intervalTim...原创 2021-06-24 17:06:58 · 283 阅读 · 0 评论 -
UE4多语言设置
前言以前开发多语言游戏的时候都是自己写文件然后去用多语言的关键字Key去根据当前语言来读取对应的Value。现在UE4可以直接使用多语言。开启本地化功能Edit=>Editor Preference打开本地化配置面板Localization Dashboard设置本地化支持文件的文件路径Tip非C++项目,不需要勾选Gather from Text Files,因为你没有这些文件,如果勾选的话,可能会导致失败。添加语言并激活Gather Text搜索原创 2021-06-18 11:51:36 · 389 阅读 · 0 评论 -
UE4 ReplicationGraph系统介绍
系统框架图ReplicationGraph是基于TCP和UDP混合的方式实现的。 TCP用于建立Instance间的握手或者连接 UDP用于Replication同步对象 Actor Replication基础介绍 基于UE4的Actor/UProperty/UFunction为单位进行同步 大部分相关的设置可以直接在Editor中直接设置 UE4本身已经提供了一些优化的选项,另外也保留了一些可以自定义优化行为的方式 对于Character原创 2021-06-09 10:52:53 · 834 阅读 · 1 评论 -
UE4 遍历UserWidget下所有UI对象
pUserWidget->WidgetTree->ForEachWidget([&](UWidget* pWidget){ FString widgetClassName = pWidget->GetClass()->GetName(); }});通过上述代码我们能够编译UserWidget下所有子对象。原创 2021-06-09 10:10:31 · 1666 阅读 · 0 评论 -
UE4获取指定目录下所有文件
UE4获取指定目录下所有文件FString strBasePath = FPaths::Combine(*FPaths::ProjectDir(), TEXT("Content/")); FString allUIFilePath = FPaths::Combine(*strBasePath, TEXT("UI/Wnd/")); TArray<FString> allWndFilePath;IFileManager::Get().FindFilesRecursive(allWn.原创 2021-06-09 09:44:35 · 2306 阅读 · 0 评论 -
UE5 2021年5月抢先体验版内容
使用快捷键像拉抽屉一样访问资源。 Nanite 虚拟化微多边形几何体系统。虚拟化几何体能够在不牺牲速度的前提下 支持比以前多出几个数量级的三角形。取代了传统的网格体LOD系统,无需任何设置能够处理所有无缝切换。 切换到这个Nanite可视化视图我们就能看到每个三角形在视口中都被渲染为不同的颜色。因为几何体是虚拟化的。 这里的每个实例说是可以包含一、两百万个三角体。。(显卡会爆吧???) 全新的抗锯齿解决方案,时序超分辨率。以1080P的成本实现直追真正原生4K的画质...原创 2021-05-27 16:13:16 · 318 阅读 · 1 评论 -
UE4 PhyX物理引擎应用介绍
游戏中的物理系统游戏物理主要是解决两个问题,其一是碰撞查询(Query),比如我面前有一堵墙,我还可以走多远就会被撞到;其二是物理模拟(Simulation),比如游戏角度死亡后身体该如何倒下,飞驰的载具被路上的矮石墩碰到后如何表现等。UE4物理模块集成的是Nvidia的PhysX。这里介绍下PhysX的基础对象 PxScene场景对象,同一个场景中的物体才有可能进行物理碰撞等,因此场景是一个场景物体的管理者 PxRigidActor刚体对象(Rigidbody)的封装 ...原创 2021-05-21 16:49:31 · 1531 阅读 · 1 评论 -
UE4 Low Level Memory Tracker使用
简介LLM(Low Level Memory Tracker) 是从 4.18 开始引入的新的内存统计工具,比 memreport 统计数据更加详细精确,但又不会像 MallocProfiler 那样有很大的本身开销相关代码实现在Engine\Source\Runtime\Core\Public\HAL\LowLevelMemTracker.hEngine\Source\Runtime\Core\Private\HAL\LowLevelMemTracker.cpp功能开...原创 2021-05-20 09:41:06 · 874 阅读 · 0 评论 -
UE4 Sequence使用
介绍Sequence在UE4中是用来实现过场动画的作用的。在ue4的editor中sequence有两个入口1个是level sequence 一个是master sequence。其中master sequence就类似level sequence的一个超集。一般而言对于程序开发主要了解level sequence就可以了。层级为LevelSequence一般用于场景的主Sequenceshots每个sequence可以一个shots也可以多个sequence为一个shotssub原创 2021-05-17 15:54:45 · 3013 阅读 · 0 评论 -
UnrealVS插件使用
功能介绍 单文件编译 一次性编译多个版本 VS关联配置在工具条加上UnrealVS选项Tools=>Customize=>Toolbars=>UnrealVS配置增加单文件编译Add or Remove Buttons=>Customize=>Command=>AddCommand=>Extensionse=>CompileSingleFile一次性配置编译多个版本选择Batch Builder配置多原创 2021-05-17 10:27:55 · 249 阅读 · 0 评论 -
TArray的MoveTemp推荐
TArray成员变量介绍TArray实际占用的内存,只有这3个成员变量的内存Engine\Source\Runtime\Core\Public\Containers\Array.hElementAllocatorType AllocatorInstance; //数组内存分配器指针SizeType ArrayNum; //数组长度SizeType ArrayMax; //ArrayMax是数组最大可容纳元素的数量TArray构造方式拷贝构造扩..原创 2021-04-22 10:13:33 · 385 阅读 · 0 评论 -
UE4-Gameplay技能系统
简介Gameplay技能系统能够帮助我们实现任何RPG或MOBA中设计的技能。可以便利的进行这些动作的 冷却倒计时 资源消耗 更改技能等级 技能效果配置(粒子系统、音效等等) 系统配置由于Gameplay技能系统是一个插件,需要先弃用才能使用。可以通过2步来启用它。 编辑=》插件=》窗口中启用Gameplay技能系统插件 配置项目的Build.cs文件的`PublicDependencyModuleNames` PublicDepe.原创 2021-04-16 11:19:53 · 802 阅读 · 0 评论 -
UE4-BlendSpace混合空间
简介UE4混合空间用于多个骨骼动画之间创建过过渡动画,使其表现更加合理。实例实现一个根据角色速度进行Idle、Walk、Run等动画的融合。 新建Animation=>BlendSpace资源选择基础骨骼 BlendSpace右下角AsseBrowser为当前混合空间骨骼对应的动画及混合空间 正下方为动画混合工作区,可将右下角对应的动画拖入,拖入后可在左侧栏的AxisSetting进行属性设置。 Number of Grid Divisions改为3,将坐标原创 2021-04-14 10:14:40 · 626 阅读 · 0 评论 -
UE4-常见属性说明符
BlueprintAssignable只包含组播委托。属性应暴露在分配蓝图中。BlueprintCallable只包含组播委托。属性应暴露在调用代码蓝图中。BlueprintReadOnly此属性可以在蓝图中都读取,但不能修改。BlueprintReadWrite此属性允许在蓝图中被读或写。Category指定该属性类别。用法:Category=类别名Config此变量将进行配置。当前值可保存到ini文件,并且将在创建时被加载。在默认属性中不能赋值意味着...原创 2021-04-13 14:27:57 · 288 阅读 · 0 评论 -
UE4碰撞体
碰撞体必备属性参与碰撞的物体必须包含的两个属性 通道Channel(可以理解为参与碰撞的物体本身类型) Channel之间的Interact Type Channel默认情况下,与物体碰撞响应相关的Channel有六种分类: WorldStatic-游戏中的静态对象,即不会以任何方式移动,如地形等。 WorldDynamic-除了下面4种之外的游戏内可移动物体。 Pawn-由玩家或者AI控制的角色。 PhysicsBody-所有可以被Simul原创 2021-04-07 11:31:01 · 768 阅读 · 0 评论 -
UE4Controller、Pawn、ActorComponent关联介绍
继承关系APawn=》AActor&&INavAgentInterfaceActor=》UObjectAPlayerController=》AController=》AActorUActorComponent=>UObject&&IInterface_AssetUserData常用接口已知AController获得PawnAPawn* pPawn = pController->GetPawn();已知Actor获得其..原创 2021-04-07 09:50:33 · 298 阅读 · 0 评论 -
UE4粒子系统
名词解释粒子系统用于创建并且管理粒子的存在。粒子一个粒子本质只是游戏世界里的一个点。通过粒子系统,我们可以控制粒子的出现和表现。发射器粒子系统的组件负责生成粒子模块发射器的组件,负责控制发射器粒子的表现。模块通常包括许多参数,如粒子的材质和初始速度。粒子系统编辑器可分为4个模块 Viewport:该面板用于展示粒子特效的预览效果。 Details:显示组件的参数。 Emitters:发射器列表。每个发射器对应显示它的模...原创 2021-03-30 13:56:37 · 328 阅读 · 0 评论 -
UE4 DataTable
创建步骤 创建继承于FTableRowBase的USTRUCT #include "Engine/DataTable.h"STRUCT(BlueprintType)struct GAMECOMPONENT_API FMagicConfig : public FTableRowBase{ GENERATED_USTRUCT_BODY() FMagicConfig();public: UPROPERTY(EditDefaultsOnly) int32 Ma...原创 2021-03-30 11:03:07 · 124 阅读 · 0 评论 -
UE4定时器
功能介绍可以设置定时或延时执行某个操作。设置定时器FTimerHandle timerHandle; FTimerDelegate Delegate = FTimerDelegate::CreateUObject(&ATestTime::OnCountDown); GetWorld()->GetTimerManager().SetTimer(timerHandle, Delegate, 1.0f, true);void ATestTime::OnCountDow.原创 2021-03-30 10:44:56 · 237 阅读 · 0 评论 -
UE4 C++代码播放UMG中的动画
前言在开发UE4项目时,经常将UMG的动画直接在编辑器中实现。而调用的时机却是要由C++逻辑代码来决定。实现此类功能目前我知道的有两种方式 C++声明 UFUNCTION(BlueprintImplementableEvent)函数然后在蓝图中重载调用 利用反射代码来获取对应动作的对象,然后进行动画播放。 目前我自己是比较倾向于方式1反射获取对应动画代码AnimationsMap.Empty();UProperty* Prop = GetClass()->Pr.原创 2021-03-18 14:56:06 · 1277 阅读 · 0 评论 -
UE4-GamePlay-UPlayer
简介在游戏引擎看来,玩家就是输入的发起者。而游戏说白了也只是接受输入产生的一个程序。所以有多少输入,这些输入归多少组,就有多少个玩家。在UE4玩家还是分为本地玩家和网络玩家两个概念进行管理的。在UE中UPlayer派生了LocalPlayer和NetConnection两个子类。ULocalPlayer对于玩家对象的上层就直接是游戏了,所以GameInstrance里保存着LocalPlayer列表,LocalPlayer也可以直接获得GameInstance()创建Player原创 2021-03-15 16:28:54 · 463 阅读 · 0 评论 -
UE4-SubSystem
简介SubSystems是从UE4.22版本开始引入,然后在4.24版本完善的。它的功能通过一句话来描述就是Subsystems是一套可以定义自动实例化和释放的类的框架。拥有5类生命周期 UEngineSubsystem UEditorSubsystem UGameInstanceSubsystem UWorldSubsystem ULocalPlayerSubsystem Subsystem常用类型详细介绍UEngineSubsystemGEn原创 2021-03-15 15:59:37 · 1436 阅读 · 0 评论 -
UE4 TSubclassOf使用
TSubclassOf是提供 UClass 类型安全性的模板类可以限定TSubclassOf<UBaseType>,不能使用不继承于UBaseType的其他类对象。原创 2021-03-11 10:53:36 · 281 阅读 · 0 评论 -
UE4内部引擎登录流程图
原创 2021-03-11 10:40:29 · 151 阅读 · 0 评论 -
UE4-UMG动画
控件蓝图编辑器控件蓝图编辑器底部有两个窗口,可用来设置和控制UI控件的动画。 动画窗口,用来创建驱动控件动画的基础动画轨道。 时间轴,用来指定动画如何随时间应用至控件,其方法是在指定的时间上放置关键帧并定义附加的控件在该关键帧如何显示。 创建动画通过点击左下角的”+Animation"按钮可以添加动画关键帧编辑动画关键帧有两种方法Auto Key复选框针对某个时间,某个属性,设置某个值关键帧属性旁边单击添加关键帧按钮蓝图中调用动画可以将动画拖...原创 2021-03-08 14:43:59 · 334 阅读 · 0 评论 -
UE4按键输入绑定
功能入口Edit=>ProjectSetting=>Engine=>Input=>输入类型介绍Action Mappings代表相应的两种状态,按下(1)和松开(0)Axis Mappings返回的是一个0.1和1.0的数值代表松开和按下的时间。动态绑定按键//添加轴向绑定事件void AddAxisMapping(const FInputAxisKeyMapping&, KeyMapping, bool bForceReb.原创 2021-03-08 11:49:12 · 607 阅读 · 0 评论 -
UE4模块使用
什么是UE4模块?模块(Module)是UE4的构建基块。每个模块都包含一组功能,然后提供给其他模块使用。模块中必须包含的文件有 *.Build.cs using UnrealBuildTool;using System.Collections.Generic;public class MyModule : ModuleRules{ public MyModule(ReadOnlyTargetRules Target) : base(Target) { .原创 2021-02-25 17:27:49 · 505 阅读 · 0 评论