自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 UE5网络同步机制详解

在UE5中,函数是网络同步机制的核心组成部分,用于声明哪些变量需要在服务器和客户端之间自动同步。是UE5网络同步的基石,通过注册变量并定义复制规则,确保服务器与客户端间的数据一致性。合理使用复制条件和OnRep函数,既能实现功能,又能优化网络性能。

2025-04-11 01:02:53 219

原创 UE5 Lyra Experience控件模式详解

在UE5的Lyra示例项目中,Experience(游戏体验)是一种核心的控件模式,用于动态配置和管理游戏玩法模块。它通过数据资产的形式,将关卡逻辑、角色配置、插件加载等功能模块化,从而实现不同游戏模式的灵活切换。Experience是一个数据资产(),用于定义特定游戏模式所需的全部配置。模块化配置Experience包含需激活的Game Feature插件列表默认角色数据(Pawn Data)初始化时需执行的Action集合等。动态加载:在切换关卡或模式时,通过加载不同的Experience资产。

2025-04-11 00:54:08 321

原创 UE5 RPC调用示例详解

在UE5中,RPC(远程过程调用)是实现多人游戏逻辑同步的核心机制。以下通过一个玩家跳跃的示例,详细说明如何使用三种RPC类型(Server、Client、Multicast)。Server RPC:客户端发起请求,服务器处理核心逻辑。:服务器向全体客户端广播同步。验证函数:防止客户端发送非法请求(如作弊)。权限控制:确保逻辑在正确的端执行。通过合理使用RPC,可以高效实现多人游戏的交互同步,同时保障游戏的安全性与流畅性。

2025-04-10 20:56:14 361

原创 虚幻引擎UActorComponent的TickComponent详解

在虚幻引擎(Unreal Engine)中,是 Actor 组件的基类,用于实现可复用的功能模块。是组件中用于每帧更新逻辑的核心函数,类似于 Actor 的Tick函数,但需要显式启用。通过合理使用,可以实现高效的动态行为,同时保持代码的模块化和可维护性。

2025-04-08 15:13:20 558

原创 UE5中TSoftObjectPtr的使用详解

在UE5中,是一种重要的资源管理工具,它允许开发者以“软引用”的方式引用资源(如纹理、模型、蓝图等),而不会强制资源立即加载到内存中。这种机制特别适用于需要动态加载资源的场景,例如开放世界中的流送系统或按需加载资源。是UE5中实现资源动态加载的核心工具之一,合理使用可显著优化内存占用和启动时间。结合AsyncLoad和,能够高效管理大规模资源,特别适合开放世界、动态内容加载等场景。

2025-04-06 04:16:12 881

原创 UE中DataTable创建问题解决方案

想在UE的编辑器中以FInventoryItemData为表头创建DataTable时找不到FInventoryItemData是怎么回事?在 Unreal Engine 中创建 DataTable 时无法找到。

2025-04-06 04:04:38 161

原创 Unreal Engine 高效数组复制用法详解

在 Unreal Engine 中,和是用于高效网络复制数组数据的工具类,尤其在需要频繁同步动态数组时(如背包系统、技能列表等场景)。以下通过一个背包物品同步的示例详细说明它们的用法。提示:以下是本篇文章正文内容,下面案例可供参考// 继承自 FFastArraySerializerItemUSTRUCT()// 物品唯一ID// 数量// 耐久度// 网络复制标识符(必须实现)// 继承自 FFastArraySerializerUSTRUCT()// 物品数组。

2025-04-03 13:24:58 912

原创 UE Lyra示例LyraExperienceActionSet模块解析

在 ​UE5 Lyra 示例项目中,LyraExperienceActionSet 是一个关键的数据驱动模块,主要用于**动态管理游戏体验的输入配置(Input Mapping)和技能系统(Ability System)**​。​1.解耦设计输入、技能、UI 等系统通过 ActionSet 分离,避免硬编码依赖。​2.动态资源管理支持运行时加载/卸载,适用于开放世界或模块化游戏。​3.协作友好策划人员可通过数据资产配置,无需修改代码。

2025-04-02 12:10:30 854

原创 UE Lyra示例LyraExperienceDefinition模块解析

在UE5的Lyra示例项目中,LyraExperienceDefinition模块是一个核心的游戏体验配置资产总结来看,LyraExperienceDefinition是Lyra框架中连接引擎底层与游戏逻辑的枢纽,通过数据驱动和模块化设计,实现了高效、灵活的游戏模式管理。其核心价值在于将传统硬编码的GameMode逻辑转化为可配置、可扩展的资源,极大提升了项目的可维护性和动态扩展能力。

2025-04-02 12:03:48 722

原创 UE Lyra示例LyraPawnData模块解析

在Unreal Engine的Lyra示例项目中,​。

2025-04-02 11:57:12 262

原创 UE Lyra示例LyraAbilityTagRelationshipMapping模块解析

在UE Lyra示例项目中,模块是游戏技能系统(Gameplay Ability System,简称GAS)的关键组件,主要作用是通过标签(Tags)的配置管理技能之间的逻辑关系,确保技能激活、互斥、依赖等行为的正确性。模块通过标签的规则化配置,实现了技能系统的动态逻辑控制,是Lyra示例中GAS复杂交互的核心枢纽。开发者可通过修改其数据资产(Data Asset)快速调整技能行为,而无需深入修改底层代码。

2025-04-02 11:51:21 405

原创 UE5中UBlueprintFunctionLibrary类详解

在 Unreal Engine 5(UE5)中,是一个用于在蓝图中暴露 C++ 静态函数的工具类。通过继承此类,开发者可以创建全局可访问的工具函数,让蓝图和 C++ 共享逻辑。

2025-03-07 04:36:29 480

原创 UE5 AssetManager类使用详解

在 Unreal Engine 中,是资源管理的核心类,主要负责异步资源加载、卸载、主资源(Primary Assets)管理和资源审计等功能。在。

2025-03-07 02:36:16 456

原创 UE中UGameplayTagsManager类详解

在Unreal Engine中,是管理的核心类,负责标签的注册、查询、层次结构管理和验证。Gameplay Tag 是一种分层标签系统(如或),广泛用于技能系统、状态管理、条件判断等场景。以下从功能、代码示例和实际应用三个方面详细说明。是管理系统的核心类,提供标签的注册、查询、层次化操作和验证功能。通过标签的层次结构,开发者可以高效实现状态管理、技能条件判断等复杂逻辑,是UE中Gameplay框架的重要组件。

2025-03-07 01:51:35 440

原创 UE中UGameplayModMagnitudeCalculation接口详解

在虚幻引擎(Unreal Engine)的 Gameplay Ability System(GAS)中,UGameplayModMagnitudeCalculation 是用于动态计算 Gameplay Effect 的 Modifier 数值的核心类。通过继承该类并重写其关键接口,可以实现复杂的数值计算逻辑(如基于角色属性的动态加成)。

2025-03-05 05:58:55 899

原创 UE GAS框架中GameplayEffect/Attribute Based Modifier详解

在虚幻引擎的框架中,当你在的Modifiers中使用时,意味着该修饰符(Modifier)的数值大小是基于某个属性(Attribute)的当前值或最大值动态计算的。这种机制常用于实现与角色属性动态绑定的效果,例如“基于智力值的技能伤害”或“基于目标最大生命值的治疗效果”。以下是提供了一种灵活的方式,将的数值与角色属性动态绑定。通过合理配置Snapshot和计算公式,可以实现复杂的游戏机制,如角色成长、环境交互和动态技能效果。

2025-03-05 03:33:49 606

原创 C++函数参数传入指针与引用区别

在C++中,将指针或引用作为函数参数传递时,主要区别体现在语法、空值合法性、可修改性及安全性上。特性指针引用语法需取地址 (&) 和解引用 (*)直接使用变量名空值可为 nullptr必须绑定有效对象可修改目标可以重新指向其他地址绑定后不可更改安全性需手动检查空指针天然避免空值问题典型用途动态内存、可选参数必须有效参数、运算符重载根据需求选择:需空值或重定向时用指针;需安全简洁时用引用。

2025-03-02 03:12:51 183

原创 C++函数指针及其用途详解

在C++中,函数指针是一种指向函数而非数据的指针,允许通过指针间接调用函数。回调机制:将函数作为参数传递(如事件处理)。策略模式:运行时动态选择算法。函数表/跳转表:通过索引或键快速调用不同函数。兼容C代码:与C语言库交互时传递函数。STL算法:为泛型算法提供自定义行为(如排序规则)。插件系统:动态加载并调用函数。

2025-03-02 02:48:34 320

原创 C++重载与重写的区别详解

在C++中,重写(Overriding)和重载(Overloading)是两个不同的概念,分别用于实现不同类型的多态性。以下是它们的核心区别和用法:+重载:通过参数差异提供同一函数名的多种实现,增强代码灵活性。重写:通过虚函数机制实现运行时多态,是面向对象的核心特性之一。理解二者的区别,能帮助你更好地设计类的层次结构和接口。

2025-03-02 02:11:32 463

原创 C++虚函数表机制详解

在C++中,虚函数表(vtable)是实现动态多态的核心机制。核心机制:虚函数表通过存储虚函数地址和vptr实现动态绑定。多态实现:允许基类指针调用派生类函数。编译器依赖:具体实现(如vptr位置、vtable结构)因编译器而异。理解虚函数表有助于深入掌握C++多态原理及对象内存模型,但对实际开发而言,应遵循面向对象设计原则,而非直接操作虚函数表。

2025-03-02 00:53:56 531

原创 C++动态与静态转换区别详解

在 C++ 中,和是两种不同的类型转换操作符,主要区别体现在类型检查的时机安全性和适用场景上。特性类型检查时机运行时编译时安全性高(失败返回 nullptr 或抛异常)低(依赖开发者保证)性能有运行时开销(RTTI)无开销适用类型多态类型(需虚函数)任意类型(包括非多态)典型用途向下转型、交叉转型基本类型转换、显式向上/向下转型优先选择 static_cast,除非需要处理多态类型的不确定转换(此时用。

2025-03-01 23:52:39 467

原创 C++中const关键字的作用详解

C++ 中的 const 关键字用于定义“常量性”,即标识某个实体不可被修改。它的作用广泛,可以增强代码的安全性、可读性和优化潜力。声明变量为常量,初始化后不可修改。// 错误!不可修改const安全性:防止意外修改数据清晰性:明确代码意图,如参数不可变、函数不修改对象状态等。优化:编译器可能利用const进行优化(如将常量放入只读内存合理使用const是编写健壮、可维护 C++ 代码的关键习惯。

2025-03-01 23:22:50 344

原创 UE5 Gameplay框架及继承关系详解

Unreal Engine 5(UE5)的Gameplay 框架是一个高度模块化的系统,用于构建游戏逻辑、角色控制、多人同步和游戏规则等核心功能。UE5 的 Gameplay 框架通过清晰的类层次和组件化设计,提供了高度模块化和可扩展的架构。Actor 是世界的实体Controller 是逻辑的控制者Component 是功能的模块GameMode/GameState 是全局规则和状态。理解这些类的继承关系和协作方式,是高效开发 UE5 游戏的关键。

2025-02-24 06:33:55 1378

原创 UE5网络通信架构解析

结合C/S与P2P的优势,例如:关键逻辑由服务器处理,非关键数据传输使用P2P(如语音聊天)。分区分服设计,将游戏世界划分为多个服务器管理区域(如大世界游戏)。

2025-02-24 05:57:04 552

原创 C++-static关键字

C++ 中的 static 关键字用途广泛,具体用法因上下文而异。上下文用途关键特性全局变量/函数限制作用域到文件内部链接,避免冲突局部变量延长生命周期至程序结束保持局部作用域,持久化值类静态成员变量类级别共享数据所有实例共享,类外定义类静态成员函数无需实例的操作无 this,仅访问静态成员函数内静态对象单例、延迟初始化线程安全(C++11起),仅一次构造通过合理使用static关键字,可以优化代码结构、管理数据生命周期并控制访问范围。

2025-02-24 05:45:52 592

原创 lua垃圾回收机制

Lua 的垃圾回收(Garbage Collection, GC)机制是一种自动内存管理技术,主要基于标记-清除(Mark-and-Sweep)算法,并结合了增量式(Incremental) 和分代(Generational)优化策略(不同版本实现略有差异)。自动内存管理Lua 的 GC 自动管理内存,开发者无需手动释放对象(如等)。当对象不再被引用时,GC 会将其回收。核心算法:标记-清除标记阶段:从根节点(全局变量、活跃栈、注册表等)出发,递归标记所有可达对象为“存活”。清除阶段。

2025-02-24 05:15:53 692

原创 垃圾回收算法

内存碎片化,需暂停程序运行(Stop-the-World)。:按对象存活时间分代(年轻代、老年代),优先回收年轻代。:标记后移动存活对象至内存一端,整理后释放剩余空间。:每个对象维护引用计数,当计数归零时释放内存。:从根对象出发标记所有可达对象,清除未标记的。:无法处理循环引用(如A引用B,B引用A)。:对象移动需更新所有引用,实现复杂。:减少扫描范围,提升效率。

2025-02-24 04:21:04 420

原创 lua-游戏红点提示系统抽象设计

在游戏开发中,红点提示系统可以通过树形结构和策略模式进行抽象,实现高扩展性。叶子节点:直接绑定条件函数(如检查新道具)组合节点:自动聚合子节点状态(任一子节点激活则激活)-- 红点系统核心管理器-- 所有注册的红点节点,以节点ID为键-- 没有父节点的根节点集合(例如HUD入口)-- 事件监听器(扩展功能:事件触发自动更新)-- 节点评估策略模块-- 叶子节点评估方法:直接执行条件函数-- 当且仅当条件函数返回true时激活end-- 组合节点评估方法:检查任意子节点是否激活。

2025-02-23 22:48:31 466

原创 C++右值

在C++中引入右值(rvalue)的概念主要是为了更好地优化资源管理、提高性能以及支持移动语义(move semantics)。右值是的概念C++11标准引入的重要特性之一,它与左值(lvalue)一起构成了C++中值类别(value category)的基础。以下详细解释引入右值概念的原因及其带来的好处在C++中,右值(rvalue)是指那些临时、短暂存在且没有持久内存地址的表达式。临时性:右值通常是临时生成的值,如字面量(如5、“hello”)、算术表达式结果(如a + b)或函数返回的临时对象。

2025-02-23 18:37:16 778

原创 用lua实现一个委托机制

在Lua中实现委托机制可以通过使用表(table)和函数来模拟。委托机制通常用于事件驱动编程,允许对象将某些操作委托给其他对象或函数。这里定义了一个全局的Delegate表,它将作为委托类的原型。这个委托机制的核心是通过表(listeners)存储监听函数,并通过方法(add、remove、invoke)管理这些监听函数。添加监听函数:将函数存储到listeners表中。触发委托事件:遍历listeners表,依次调用每个监听函数。移除监听函数:从listeners表中移除指定的函数。

2025-02-20 15:40:08 998

原创 UE GAS框架-Gameplay Effect各个参数详解

在虚幻引擎的框架中,是定义游戏内状态变化(如增益、减益、属性修改、状态效果等)的核心组件。通过合理配置这些参数,可以实现复杂的游戏逻辑,如状态效果、属性变化、技能触发等。理解每个参数的交互关系是设计高效 GAS 系统的关键。

2025-02-19 23:31:29 464

原创 UE动画系统-动画蒙太奇(Anim Montage)

它允许开发者将多个动画片段组合成一个连续的、可控制的动画序列,常用于实现角色的攻击连招、技能释放动画、复杂的交互动画等。动画蒙太奇就像是一个动画的 “剧本”,可以精确地控制每个动画片段的播放顺序、时间和过渡效果。通过以上代码示例,你可以看到如何在 C++ 中使用动画蒙太奇,包括播放动画蒙太奇、根据标签控制播放位置以及处理动画通知事件。然后在动画蒙太奇中添加这个自定义的通知,当动画播放到通知所在的时间点时,Notify 函数就会被调用。以下是一个简单的示例,展示如何在角色类中播放动画蒙太奇。

2025-02-19 21:20:46 624

原创 lua中用.调用的函数和用:调用的函数有什么不同

在Lua中,使用 . 和 : 调用函数的区别主要与 隐式传递 self 参数 有关。用定义:需手动声明 self 参数。-- 通过 self 访问对象的属性和方法end用定义:自动隐式添加self参数。-- 直接使用 self 访问对象的属性和方法end是语法糖:简化了面向对象编程中self的传递。更灵活:可用于非面向对象的场景,例如调用静态方法或工具函数。性能无差异:两种方式最终会被转换为相同的底层操作。通过合理选择和。

2025-02-19 13:27:58 312

原创 UE GAS框架中Gameplay Effect 和 Gameplay Ability的区别

在Unreal Engine的Gameplay Ability System(GAS)中,和特性触发方式主动(玩家输入、AI决策)被动(被Ability或其他事件应用)主要职责技能逻辑(释放流程、动画、资源消耗)属性/状态修改(数值变化、添加减益)生命周期管理激活、执行、冷却管理持续时间、堆叠、周期性触发网络同步支持客户端预测通常由服务器权威同步典型用例火球术、冲刺、格挡中毒、加速、无敌、护盾。

2025-02-18 18:37:51 582

原创 C++-智能指针

在C++中,智能指针是用于自动化内存管理的关键工具,能有效防止内存泄漏和悬空指针等问题。适用场景:管理非new分配的资源(如malloc、文件句柄)。示例// 使用lambda自定义删除器智能指针通过RAII机制简化资源管理,提升代码健壮性。unique_ptr:独占资源,高效无开销。shared_ptr + weak_ptr:共享资源,处理复杂生命周期。自定义删除器:适配特殊资源管理需求。

2025-02-13 14:35:05 378

原创 UE中常用的容器

综上所述,TArray 适合需要快速随机访问元素的场景;TSet 适合需要快速判断元素是否存在的场景;TMap 适合需要根据键快速查找、插入和删除对应值的场景。

2025-02-12 17:28:26 718

原创 lua中子类如何调用父类方法

在Lua中,由于没有内置的类系统,子类调用父类方法需要显式引用父类并传递实例作为self参数。setmetatable(instance, { __index = Parent }) -- 设置元表,实现方法查找endend直接调用:适用于简单继承,通过Parent.method(self)直接引用。super链:适用于多层继承,通过维护super字段实现链式调用。元表设置:确保实例和类的元表正确指向,实现方法查找链。

2025-02-11 03:28:11 274

原创 UE垃圾回收-UE中UObject对象如果不想被GC回收,可以怎么做?

避免滥用 AddToRoot():过度使用会导致内存泄漏,仅在必要时使用(如全局单例对象)。引用闭环:若对象互相引用(即使有UPROPERTY),可能导致无法回收,需手动打破循环。蓝图引用:在蓝图中引用UObject(如保存到变量)会自动阻止GC回收。根据具体场景选择合适方法,优先使用UPROPERTY和对象层级管理,慎用AddToRoot()。

2025-02-10 14:08:08 447

原创 UE垃圾回收-纳入被自动GC机制管理的条件

场景方法代码示例UObject成员变量引用使用 UPROPERTY 标记手动管理复杂引用重写 AddReferencedObjects结构体保护UObject引用继承 FGCObject 并实现接口。

2025-02-10 13:55:23 927

原创 怎么用UE GAS框架添加一个技能

C++类实现UCLASS()public:) override;if (!CommitAbility(Handle, ActorInfo, ActivationInfo)) { // 检查资源/冷却return;// 技能逻辑(例如应用GameplayEffect、播放动画)// ...或使用蓝图创建蓝图类继承自 UGameplayAbility,重写 ActivateAbility 事件。通过以上步骤,即可在UE中实现一个基于GAS的技能系统。

2025-02-10 06:10:29 373

空空如也

空空如也

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

TA关注的人

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