自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(347)
  • 收藏
  • 关注

原创 UE的结构体和数据表格的关系

摘要:数据表格(DataTable)是UE引擎中存储结构化数据的工具,通过结构体(USTRUCT)定义列类型和名称。创建时需要继承FTableRowBase并添加UPROPERTY标记,支持CSV/JSON导入。使用时通过行名(FName)查找数据,可在C++和蓝图中访问。最佳实践包括:使用TSoftObjectPtr避免强引用、FText支持本地化、保持行名稳定等。DataTable适合存储游戏数据如道具、武器参数等,便于设计师直接编辑表格数据。

2025-11-24 16:58:29 1094

原创 UEC++ GeometryCollectionEngine模块

摘要:GeometryCollectionEngine是虚幻引擎中Chaos破碎系统的核心模块,负责几何体集合的物理模拟与碎裂效果。主要功能包括管理几何体资源、控制破碎层级、实现碰撞检测和动态模拟等。该模块与Chaos物理引擎、FieldSystemEngine力场系统协同工作,通过UGeometryCollectionComponent等核心组件实现破碎体显示与交互。开发时需在Build.cs中添加模块依赖,可通过C++或蓝图触发破碎效果,常用于爆炸、建筑坍塌等场景,结合Niagara粒子系统可增强视觉表

2025-11-13 17:14:36 462

原创 UEC++ 如何知道有哪些UComponent?

Unreal Engine中的组件(Component)体系以UActorComponent为基类,可附加到Actor上。USceneComponent继承自UActorComponent,增加了位置/旋转/缩放功能,是大多数可见组件的基础。UPrimitiveComponent进一步扩展为可渲染或碰撞的组件(如静态网格、骨骼网格、碰撞体等)。其他功能型组件包括摄像机、光源、UI、特效、音频等,涵盖游戏开发的各种需求。开发者可通过蓝图编辑器、代码查看或官方文档了解完整的组件体系。

2025-11-11 18:23:06 541

原创 UEC++ 创建默认子对象CreateDefaultSubobject

摘要: CreateDefaultSubobject是虚幻引擎C++中用于在构造函数内创建并注册默认组件的核心函数,适用于AActor等类的子对象初始化。其语法为模板函数,需指定组件类型和名称,仅能在构造阶段调用。与NewObject不同,它创建的组件会被引擎自动管理,支持反射、序列化及蓝图编辑。典型应用包括创建碰撞体、网格体等组件,并通过SetupAttachment建立层级关系。该函数确保组件在编辑器和运行时可见可配置,是构建Actor默认功能的关键方法。 (149字)

2025-11-11 18:15:54 332

原创 什么是函数模板(templates)?

摘要:C++模板是一种编译期泛型编程机制,支持函数模板、类模板、非类型参数和可变参数模板。它通过类型实例化实现代码复用,提供类型安全且零开销的泛型编程。模板功能包括编译期计算、策略模式等,但可能导致代码膨胀和复杂错误信息。相比虚函数的运行时多态,模板更适用于需要高性能的场景。C++20引入Concepts改进模板约束。最佳实践建议合理使用模板,将定义放入头文件并注意可读性。

2025-11-11 18:06:53 755

原创 Rider取消屏幕中间的竖线

摘要:介绍如何去除JetBrains Rider编辑器中的垂直参考线。通过快捷键Ctrl+Alt+S打开设置窗口,在"外观"选项中取消勾选"显示强制换行和视觉参考线"即可。该设置位于"代码样式"配置项中,帮助用户消除屏幕中间的竖线干扰。

2025-11-10 17:48:49 164

原创 UEC++里Super::BeginPlay()是什么

在UnrealEngine中,Super::BeginPlay()用于调用父类的BeginPlay()方法。当子类重写BeginPlay时,通过Super::确保父类的初始化逻辑(如组件初始化、网络同步等)优先执行,再添加子类特有逻辑。Super是一个指向父类的宏,避免直接跳过父类关键功能导致异常。这种调用模式是UE生命周期函数的标准做法。

2025-11-09 17:34:48 213

原创 AActor前面为什么要加A? UObject前面为什么要加U?

Unreal Engine采用特殊命名规范区分类类型:U前缀表示UObject派生类(如UUserWidget),A前缀表示可放入关卡的AActor派生类(如ACharacter)。这种区分基于类型系统设计,AActor本质也是UObject但具有场景特性。其他规范包括F(结构体)、E(枚举)、I(接口)、T(模板类)。命名前缀帮助开发者和编译器快速识别类用途,如A类可实例化到场景,U类通常作为资源或逻辑类存在。简单记忆法是"A在场景里,U在内存里"。

2025-11-09 11:41:38 446

原创 UE核心架构概念

本文概述了Unreal引擎中的核心游戏框架类及其网络特性。GameInstance作为全局对象管理会话和存档,GameMode制定游戏规则仅存于服务器,GameState同步游戏状态到所有客户端。PlayerController处理玩家输入,PlayerState存储玩家数据并同步,Pawn/Character实现玩家实体移动。Actor作为基础类支持变量复制,Subsystem提供模块化功能管理。学习路径建议从全局管理类(GameInstance/Mode/State)入手,再掌握玩家相关类(Contro

2025-11-08 16:23:27 1012

原创 UE网络复制中的可靠函数是什么意思 什么时候要勾选什么时候不勾?

可靠函数(Reliable)是Unreal引擎中RPC调用的一种机制,确保网络数据包通过重发和确认机制最终到达并按调用顺序执行。适合用于低频关键事件(如交易、状态变更),但会带来延迟和带宽成本。不可靠函数(Unreliable)更适合高频可覆盖数据(如位置更新)。使用可靠函数需谨慎,避免因重传和阻塞导致性能问题。开发者应根据数据重要性、频率及容忍度来选择,高频数据建议采用不可靠方式或状态同步。测试时需模拟网络问题验证可靠性。

2025-11-07 16:50:46 816

原创 Windows内核函数使用

本文介绍了Windows内核中未文档化的API和函数分类。代码示例展示了驱动程序的入口点(DriverEntry)和卸载函数(DriverUnload)的实现,以及如何使用RtlInitUnicodeString初始化UNICODE_STRING结构。文章详细列出了Windows内核函数的前缀分类,如Ex(管理层)、Ke(核心层)、HAL(硬件抽象层)等,并解释了各前缀对应的模块功能。最后提到了结束进程相关的未导出内核函数,包括NtTerminateProcess、PspTerminateAllThread

2025-11-07 01:55:40 410

原创 内存操作函数

该代码实现了一个Windows内核驱动,主要功能是获取并输出全局描述符表(GDT)的内容。驱动在加载时打印"驱动加载!"信息,卸载时打印"驱动卸载!"。通过汇编指令sgdt获取GDT基地址和限制,分配非分页内存后复制GDT数据,以16字节为单位格式化输出各个描述符项。程序使用了内存分配(ExAllocatePool)、内存初始化(memset)、内存拷贝(memcpy)和内存释放(ExFreePool)等内核API,最后通过DbgPrint输出调试信息。

2025-11-06 19:58:12 180

原创 双向循环链表

本文展示了Windows内核驱动中双向链表的操作示例,包括链表初始化(InitializeListHead)、空链表判断(IsListEmpty)、头部/尾部节点插入(InsertHeadList/InsertTailList)等基本操作。通过定义包含LIST_ENTRY的结构体TEST,演示了如何创建包含5个元素的链表并进行初始化、插入等操作。代码片段来自DriverEntry函数,展示了驱动入口点和卸载例程的基本结构,这些链表操作在内核开发中常用于管理数据结构。

2025-11-06 19:56:50 156

原创 段寄存器(Segment Register)

段寄存器是x86架构中用于内存分段管理的寄存器组,包含CS、DS、SS、ES、FS、GS共6个基本段寄存器,以及TR和LDTR两个系统寄存器。在保护模式下,段寄存器通过段选择子结合描述符表实现内存保护,每个段包含选择子、属性、基址和范围等信息。反汇编代码中,段寄存器体现为指令前缀(如ds:[0x123456]),实际访问地址为ds.base+偏移量。通过汇编指令可读取段寄存器值,其中FS常用于访问线程环境块,GS用于线程局部存储。

2025-11-06 19:53:38 864

原创 全局描述符表GDT (Global Descriptor Table)

摘要:全局描述符表(GDT)是x86架构保护模式下管理内存访问的关键数据结构,包含8字节的段描述符,定义内存段的基址、长度和访问权限。通过GDTR寄存器定位GDT,CPU在内存访问时查询描述符实现权限控制。GDT提供内存保护、特权级别管理和段隔离功能,是操作系统稳定运行的基础。调试时可通过WinDbg的rgdtr、rgdtl等指令查看GDT信息。

2025-11-06 19:51:08 697

原创 段描述符(Segment Descriptor)

x86架构中的段描述符是实现内存管理和访问控制的关键数据结构。它定义了内存段的特性,包括基址、段限长、访问权限等信息。操作系统通过全局描述符表(GDT)和局部描述符表(LDT)管理这些描述符,确保进程间的内存隔离和访问控制。在进程切换时,相应的段描述符会被加载到处理器,从而实现对内存访问的精确控制。该机制是x86体系结构实现内存保护的重要基础。

2025-11-06 19:49:47 207

原创 段选择子与段描述符的关系

段选择子是一个16位结构,包含RPL(请求特权级别)、TI(表指示符)和Index(索引号)三个字段,用于定位GDT中的段描述符。Windows系统只使用GDT(TI=0)。段描述符为8字节结构,包含基地址、段限界和访问属性(如特权级别DPL、段类型Type等)。GDTR寄存器存储GDT的基址和大小。GDT包含代码段、数据段和系统段描述符,定义了内存段的属性(基址、限界、访问权限),其中段限界计算方式与粒度位G相关。

2025-11-06 19:47:49 430

原创 段描述符属性测试

本文详细解析了x86架构中段描述符的组成结构及其各字段含义。重点分析了BASE段基址、LIMIT段界限及其粒度单位G位(字节或4KB)的计算方式,详细说明了P位有效性、DPL权限级别、S位区分系统段/数据代码段等关键属性。对于数据段和代码段,分别阐释了TYPE域中扩展方向(E)、可写(W)、可读(R)、一致(C)等特性标志的功能,并提供了Limit在不同配置下的实际范围计算公式。此外,文章还列出了系统段的类型分类,包括各种任务门、调用门、中断门等,为深入理解x86内存分段机制提供了全面参考。

2025-11-06 19:47:01 662

原创 段权限检查(Segement Privilege Check)

摘要:CPU权限等级采用数字表示,数值越小权限越高。核心级别R0为内核态,R3为应用层。当前权限级别(CPL)由CS/SS寄存器低2位决定,应用层CPL=3。描述符特权级(DPL)定义访问段所需权限,权限检查需满足CPL≤DPL且RPL≤DPL。请求特权级(RPL)通过段选择子设置,不同RPL影响数据段访问权限。权限控制通过特权级数值比较实现,确保系统各层级安全隔离。

2025-11-06 19:46:25 233

原创 为什么UEC++需要添加模块依赖 蓝图都不要?

UEC++需要在Build.cs中显式添加模块依赖,而蓝图不需要,这源于两者不同的加载机制。蓝图利用运行时反射系统动态加载模块,引擎已预加载所有必要模块;**C++**则需要编译时静态链接,必须通过Build.cs声明依赖项(如Niagara、UMG),否则会报错。例如,使用Niagara或AI功能时,C++需手动添加模块名,而蓝图直接调用反射后的类即可。核心差异在于:蓝图是运行时动态解析,C++是编译期静态链接。

2025-11-06 19:18:07 873

原创 UEC++UNiagaraFunctionLibrary源代码

摘要:UNiagaraFunctionLibrary是Epic Games提供的用于访问Niagara粒子系统的C++和蓝图函数库。核心功能包括SpawnSystemAtLocation函数,用于在指定位置生成Niagara系统组件,支持设置位置、旋转、缩放等参数。该库还提供管理粒子系统生命周期、设置网格参数(静态/骨骼网格体)、纹理覆盖以及GPU光线追踪碰撞组等功能,为Niagara特效系统提供全面的编程接口和控制能力。

2025-11-06 18:47:43 194

原创 为什么要判断GEngine?

GEngine是UnrealEngine中管理核心功能的全局指针。由于它在游戏早期或编辑器模式下可能未被创建,直接调用其方法会导致程序崩溃。因此在使用前需先判断其是否存在(如if(GEngine){}),特别是在调用AddOnScreenDebugMessage等调试函数时。这种判断能避免空指针访问,确保程序稳定运行。

2025-11-05 00:34:41 195

原创 为什么要GetWorld()?

Unreal引擎中的GetWorld()方法用于获取当前World对象,这是引擎的核心设计概念。UWorld代表一个关卡/游戏实例,管理着场景中的Actor列表、Tick系统、网络角色、玩家控制器以及物理导航等子系统。由于大部分引擎功能都需要明确World上下文,因此GetWorld()被频繁调用,常用于生成/销毁Actor、设置定时器、获取玩家控制器、服务器跳转地图以及访问游戏模式实例等操作。这种设计确保了功能执行时具有明确的所属世界/关卡上下文。

2025-11-05 00:10:49 382

原创 UE5C++UKismetMathLibrary源代码

《UKismetMathLibrary 数学函数库源码分析》 摘要: Unreal Engine的UKismetMathLibrary是一个功能强大的数学工具库,提供超过600个静态数学运算函数,涵盖基础运算、向量计算、矩阵变换、随机数生成等核心功能。该库通过UCLASS宏标记为BlueprintThreadSafe,确保线程安全,并使用GENERATED_UCLASS_BODY宏实现代码生成。 主要功能模块包括: 基础运算:实现加、减、乘、除、取模等算术运算,以及布尔逻辑运算 向量/矩阵运算:提供2D/3

2025-11-04 15:51:18 366

原创 UE5C++UKismetSystemLibrary源代码

摘要: UKismetSystemLibrary 是 Unreal Engine 提供的蓝图函数库,包含大量实用工具函数,涵盖调试、碰撞检测、字符串处理、资产管理等功能。主要功能包括: 调试工具(打印字符串、绘制调试图形) 碰撞检测(线追踪、球体/盒体/胶囊体检测) 对象管理(验证对象有效性、路径转换) 计时器系统(延迟执行、循环定时器) 资产管理(加载/卸载资产、获取资产ID) 平台功能(URL启动、广告管理) 属性访问(编辑器属性操作) 多语言支持 该库为游戏开发提供基础功能支持,适用于调试、游戏逻辑实

2025-11-02 20:18:43 270

原创 UE5C++GameplayStatics源代码

该代码定义了Unreal Engine中的UGameplayStatics类,这是一个包含游戏实用功能的静态类,可用于蓝图和C++调用。主要功能包括: 对象和Actor生成(SpawnObject, BeginSpawningActorFromClass等) Actor操作(获取Actor数组、查找特定类Actor等) 玩家控制(获取玩家控制器、Pawn等) 关卡流式加载(LoadStreamLevel, UnloadStreamLevel等) 游戏状态管理(获取GameMode、GameState等) 时

2025-11-02 20:12:12 183

原创 UEC++屏幕打印输出Debug信息

这段代码展示了UE4引擎中AddOnScreenDebugMessage函数的使用方法。该函数用于在屏幕上显示调试信息,主要参数包括:显示持续时间(秒)、文本颜色、消息内容以及是否将新消息置顶。其中,第一个参数为-1表示相同消息会重复显示,0则表示只显示一次。示例中演示了成功提示"Success!"和"Hello World!"两个不同颜色消息的显示方式,true参数确保新消息显示在顶部。这是个实用的游戏调试工具函数。

2025-11-02 19:35:22 168

原创 Nuke节点和快捷键

这是一份影视后期特效合成常用节点与操作指南,包含核心功能与参数说明。主要涉及合并叠加(Merge)、调色(Grade/ColorCorrect)、变换(Transform)、抠像(Roto/Keyer)、模糊处理(Blur/ZDefocus)、通道操作(Copy/Shuffle)等基础节点。重点操作包括:Merge用于图层叠加,Grade调节明暗色彩,Blur类节点处理不同模糊效果,Keyer工具进行抠像,Premult处理预乘合成,以及时间变速(Retime/OFlow)等功能。同时提供了通道修改、边缘处

2025-10-26 00:23:39 162

原创 AE表达式

文章摘要: 在AE中,使用Alt+左键点击秒表图标可调出表达式面板,输入wiggle(10,20)可实现动态抖动效果,其中10表示抖动频率(次/秒),20控制抖动幅度。该表达式通过算法生成随机运动,适用于制作震动、闪烁等有机动画,无需逐帧手动调整,是提升动态设计效率的常用技巧。注意参数需根据实际项目需求调整,高频/高强度组合会产生更剧烈的抖动效果。

2025-10-23 01:38:49 365

原创 Houdini主要学哪些模块

Houdini核心模块学习指南:从基础建模(SOPs)到高级模拟(RBD/POPs/FLIP/Pyro/Vellum),再到流程自动化(TOPs/PDG)和现代场景布局(Solaris/LOPs)。建议先掌握SOPs和VEX/VOPs基础,再逐步学习各类动力学模拟,最后接触USD场景管理和渲染管线。这套系统化的学习路径帮助用户高效掌握Houdini程序化工作流。

2025-10-22 16:33:36 312

原创 Blender按I键插入关键帧没有下拉菜单

解决动画关键帧插入问题:新版本中按I键直接插入关键帧,按K键则弹出下拉菜单。简化了操作流程,提高工作效率。

2025-10-22 14:20:27 420

原创 Blender左上角查看统计面数的方法

在视图叠加层勾选统计信息即可。

2025-10-22 12:59:26 374

原创 Houdini UV节点uvunwrap 和 uvproject和uvtexture 有什么区别

文章摘要:UV展开技术有三种主要方法:UVUnwrap将模型拆解为不重叠的UV片(类似布料裁剪),适合复杂有机体;UVProject通过平面/柱面/球面投影快速贴图,适用于规则物体;UVTexture提供多功能投影模式,适合快速预览和相机投影。实际应用中,角色用UVUnwrap+UVLayout优化,规则物体用UVProject,临时预览选UVTexture。需注意投影可能产生接缝,而展开虽耗时但效果更可控。

2025-10-20 20:32:55 512

原创 Houdini破碎节点voronoifracture和rbdmaterialfracture的区别

摘要:VoronoiFracture是基础碎裂节点,通过Voronoi算法进行几何化切割,类似玻璃碎裂效果。RBDMaterialFracture是高级破碎系统,整合多种破碎逻辑,能模拟混凝土、金属等材质的真实断裂,并自动生成内表面、约束等数据,直接用于RBD模拟。核心区别:VoronoiFracture仅实现几何切割,而RBDMaterialFracture提供物理真实的材质破碎效果。(99字)

2025-10-20 18:10:20 157

原创 逆向分析光与影:33号远征队使用的UE技术栈

该游戏采用UE5尖端技术构建,核心系统包括:1)Niagara粒子系统、Chaos物理引擎和Lumen/Nanite构成的高端图形渲染管线;2)ALS角色运动系统配合MotionWarping等动画技术;3)MassAI驱动的智能NPC系统;4)GAS技能系统与jRPG定制战斗模块;5)IrisCore网络架构。技术亮点体现在实时全局光照、程序化动画控制、智能对象交互等方面,完整覆盖图形渲染、物理模拟、AI决策等游戏开发关键领域,展现了UE5引擎在次世代游戏开发中的技术优势。

2025-10-17 16:26:18 441

原创 Nuke学习笔记

F键 视图居中空格 最大化显示L 排列节点。

2025-09-28 09:15:44 146

原创 Allen特效学习笔记

文章探讨了UV扰动特效的精致表现,指出其关键在于点线面的构成关系、亮灰暗的层次对比以及虚实的空间处理。通过视觉元素的有机组合,能创造出既细腻又富有张力的视觉效果。

2025-09-26 10:19:28 152

原创 Cascadeur学习笔记

该摘要介绍了动画制作的快捷键操作指南:X键播放动画,A/D键控制帧切换,Z键返回开头,F键添加关键帧。通过鼠标左键可调整人物姿势和移动关键帧,选择曲线自动生成动画。使用Shift+鼠标中键可复制帧,并支持平滑回归功能。全文简明扼要地说明了动画制作的基本操作流程。

2025-09-19 02:53:39 201

原创 Houdini视效自学笔记

文章摘要:本文介绍了个人界面操作习惯,主要包括使用节点面板时按D键每5分钟自动保存修改,以及通过Ctrl+鼠标中键重置世界坐标系参数值的快捷操作方式。这些设置能提高工作效率并确保数据安全。

2025-09-18 02:44:55 168

原创 FluidNinja学习笔记

迁移Content目录到新项目时出现报错,主要原因是未配置自定义碰撞通道。解决方法:在引擎设置中勾选"物理-支持撞击结果"选项;将NinjaLive放入场景后,在细节面板调整大小;在核心属性组中添加更多效果过滤,使人物骨骼仅在脚部产生烟雾效果。这些配置可解决迁移导致的碰撞和特效问题。

2025-09-13 03:35:44 194

空空如也

空空如也

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

TA关注的人

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