<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[UE4引擎技术分享]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/grayrail</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; grayrail]]></copyright><item><title><![CDATA[UE5魂系游戏开发教程05]]></title><link>https://blog.csdn.net/grayrail/article/details/168626997</link><guid>https://blog.csdn.net/grayrail/article/details/168626997</guid><author>grayrail</author><pubDate>Wed, 21 Oct 2026 08:50:30 +0800</pubDate><description><![CDATA[6.这类用到了蓝图节点Retriggerable Delay，通过AI生成的gif图，可以理解该节点逻辑。若重复触发Retriggerable Delay，则不断重新计时，只有计时到了之后才会触发Completed。以及RetriggerDelay蓝图节点使用，这是该教程的第五部分。4.双击打开该蓝图，创建Boolean类型变量MovementInput，该变量将控制移动的触发。5.新建事件Movement Input Handler，该事件将控制输入禁用。10.将该函数设置为Pure，便于后续使用。]]></description><category></category></item><item><title><![CDATA[UE5魂系游戏开发教程04]]></title><link>https://blog.csdn.net/grayrail/article/details/168441174</link><guid>https://blog.csdn.net/grayrail/article/details/168441174</guid><author>grayrail</author><pubDate>Mon, 19 Oct 2026 14:03:36 +0800</pubDate><description><![CDATA[1.UE中的Gameplay Tag是一项重要概念，你可以通过这个组件实现分层级的Tag分类，以及多Tag的支持。9.Has Tag节点还有一个Exact Match选项，该选项一旦勾选将进行严格判断。未勾选的情况下使用父标签判断有子标签的情况，会返回成功，而勾选后必须是一模一样的子标签才会返回成功。4.点击AddNewTag添加后，可以看见具有父子关系的层级Tag被创建了，如果手误创建错误还可以右键删除。本系列使用UE5.5.4第三人称模板进行制作，本文讲讲述UE中Tag的使用，这是该教程的第四部分。]]></description><category></category></item><item><title><![CDATA[UE5魂系游戏开发教程03]]></title><link>https://blog.csdn.net/grayrail/article/details/168112844</link><guid>https://blog.csdn.net/grayrail/article/details/168112844</guid><author>grayrail</author><pubDate>Fri, 16 Oct 2026 10:27:20 +0800</pubDate><description><![CDATA[在之前几个部分完成了Stamina耐力条的制作，在这一部分将完成耐力条的UI显示。13.回到之前WB_Statbar的构造函数部分，在Stats之后连接Bind Event to Updatestat，绑定刚刚创建的事件分发器。7.点击UI控件右上角Graph，切换到控件蓝图，在构造函数中从UI传入的OwningPlayer拿到BP stats组件。19.将Statbar控件拖入，找到Set percent，链接引脚，完成耐力信息显示。24.将控件WB_Statbar拖入蓝图，调整大小，完成控件装配。]]></description><category></category></item><item><title><![CDATA[UE5魂系游戏开发教程02]]></title><link>https://blog.csdn.net/grayrail/article/details/167391984</link><guid>https://blog.csdn.net/grayrail/article/details/167391984</guid><author>grayrail</author><pubDate>Fri, 09 Oct 2026 17:18:55 +0800</pubDate><description><![CDATA[这里用到了UE5的Gate节点，Gate节点就像一个真实的门，Open触发后，Enter触发才会执行到Exit，而Enter触发本身这个过程不调用Exit，Close触发本身这个过程也不调用Exit。继续来看下RefreshStamina写的什么，因为UE5中函数与事件可以执行的内容不同，有些逻辑必须要写成事件才可使用一些节点。编写宏HandleStaminaRecovery，宏可以使用Delay节点，它与代码编写的思想类似，最终会转化为节点，一般逻辑少的内容适合使用Marcos。]]></description><category></category></item><item><title><![CDATA[UE5魂系游戏开发教程01]]></title><link>https://blog.csdn.net/grayrail/article/details/164058201</link><guid>https://blog.csdn.net/grayrail/article/details/164058201</guid><author>grayrail</author><pubDate>Tue, 25 Aug 2026 16:16:55 +0800</pubDate><description><![CDATA[本系列使用UE5.5.4第三人称模板进行制作，本文讲述加速跑功能，这是该教程的第一部分。]]></description><category></category></item><item><title><![CDATA[UE5 Lyra PocketWorld进行3D内容UI预览 - 下]]></title><link>https://blog.csdn.net/grayrail/article/details/163827358</link><guid>https://blog.csdn.net/grayrail/article/details/163827358</guid><author>grayrail</author><pubDate>Mon, 17 Aug 2026 16:10:12 +0800</pubDate><description><![CDATA[PocketWorld是UE5 Lyra Demo中的插件，用于在UI中预览3D内容，其内部包含了RT生成等逻辑。4.Pocket Level部分蓝图接口，其中Get or Create Pocket Level For中的参数暂时没有先不填。6.创建DataAsset对象PocketLevel01，配置Level，设置Level的Bounds，该参数会被应用于堆叠逻辑。2.初始化部分沿用上半部分文章的逻辑，图像绑定更换为SetBrushResourceObject接口，便于演示。]]></description><category></category></item><item><title><![CDATA[UE5 Lyra PocketWorld进行3D内容UI预览 - 上]]></title><link>https://blog.csdn.net/grayrail/article/details/163824157</link><guid>https://blog.csdn.net/grayrail/article/details/163824157</guid><author>grayrail</author><pubDate>Mon, 17 Aug 2026 14:50:30 +0800</pubDate><description><![CDATA[PocketWorld是UE5 Lyra Demo中的插件，用于在UI中预览3D内容，其内部包含了RT生成等逻辑。该文章分上下两部分，上半部分分享蓝图接口使用，下半部分分享C++代码以及PocketLevel的使用。测试使用UE5.2，第三人称案例Demo。]]></description><category></category></item><item><title><![CDATA[聊聊UE配置文件的Instanced与DefaultToInstanced标记]]></title><link>https://blog.csdn.net/grayrail/article/details/163714543</link><guid>https://blog.csdn.net/grayrail/article/details/163714543</guid><author>grayrail</author><pubDate>Thu, 13 Aug 2026 09:07:57 +0800</pubDate><description><![CDATA[在 UE 里给 UObject* 配表时，经常会看到Instanced的字段标记或是DefaultToInstanced的类标记， 他们可以控制这个字段是嵌入在当前配置数据中还是独立创建并引用在当前数据上。下面通过例子来讲解。]]></description><category></category></item><item><title><![CDATA[如何编写一份GDD(Game Design Document)游戏设计文档]]></title><link>https://blog.csdn.net/grayrail/article/details/163553123</link><guid>https://blog.csdn.net/grayrail/article/details/163553123</guid><author>grayrail</author><pubDate>Fri, 07 Aug 2026 09:26:28 +0800</pubDate><description><![CDATA[GDD游戏设计文档是游戏开发初期策划编写的概念文档，虽然通常游戏启动后概念也会随之改变，在过去可能需要一名策划持续性的维护GDD，但毕竟现在进入AI时代，可以交给Agent去维护这份GDD，让每个加入团队的新人都能快速上手项目。]]></description><category></category></item><item><title><![CDATA[使用反比例函数配置游戏伤害公式]]></title><link>https://blog.csdn.net/grayrail/article/details/163480497</link><guid>https://blog.csdn.net/grayrail/article/details/163480497</guid><author>grayrail</author><pubDate>Tue, 04 Aug 2026 19:43:59 +0800</pubDate><description><![CDATA[在游戏数值策划中，伤害计算公式是战斗系统的骨架。传统的“伤害 = 攻击 - 防御”看似直观，却极易导致数值崩坏。反比例函数则可以实现边际递减，不会因为防御力过高而伤害过小，也不会因为防御力过低而被一刀秒。为了让玩家能正常过关，只能提升玩家下一等级的攻击力，但对于防御力低的脆皮法师敌人往往导致过于脆皮。假设某敌人100HP，防御力50，受到100点伤害，扣去防御力还剩50伤害，2刀击杀。这时策划设计了高防敌人，100HP，防御力90，10刀击杀。x表示护甲，k表示阈值，用该值乘以原始伤害。]]></description><category></category></item><item><title><![CDATA[聊聊UE的ThisClass]]></title><link>https://blog.csdn.net/grayrail/article/details/163448105</link><guid>https://blog.csdn.net/grayrail/article/details/163448105</guid><author>grayrail</author><pubDate>Mon, 03 Aug 2026 17:43:12 +0800</pubDate><description><![CDATA[ThisClass在UE中作为类别名使用，相比较this关键字它可以调用静态成员，而又无需写全类名，这作为一种设计风格广泛在UE代码中出现。]]></description><category></category></item><item><title><![CDATA[UE5 Lyra GameSettings]]></title><link>https://blog.csdn.net/grayrail/article/details/163292933</link><guid>https://blog.csdn.net/grayrail/article/details/163292933</guid><author>grayrail</author><pubDate>Wed, 29 Jul 2026 10:24:04 +0800</pubDate><description><![CDATA[GameSettings模块负责游戏设置UI相关的逻辑组织。]]></description><category></category></item><item><title><![CDATA[UE中使用TGuardValue与TInlineComponentArray数据结构]]></title><link>https://blog.csdn.net/grayrail/article/details/163149140</link><guid>https://blog.csdn.net/grayrail/article/details/163149140</guid><author>grayrail</author><pubDate>Fri, 24 Jul 2026 09:25:47 +0800</pubDate><description><![CDATA[UE中有2种比较有趣的数据结构TGuardValue与TInlineComponentArray，TGuardValue可以让变量离开作用域时恢复原始值，而在作用域中可以任意修改。TInlineComponentArray可以在栈中更高效的分配数组(因为TArray存在一些非栈的额外分配)。]]></description><category></category></item><item><title><![CDATA[UE中使用FModuleManager模块单例接口]]></title><link>https://blog.csdn.net/grayrail/article/details/162200809</link><guid>https://blog.csdn.net/grayrail/article/details/162200809</guid><author>grayrail</author><pubDate>Mon, 22 Jun 2026 13:47:51 +0800</pubDate><description><![CDATA[UE中实现单例有多种方式，如古早的静态变量，或是SubSystem。而对于Module（如自定义C++插件），可以使用FModuleManager的单例接口，提供模块级别的单例使用。重要接口是FModuleManager.LoadModuleChecked，因为参数需要填入模块名称，所以不支持对任意类进行获得单例实例操作。以UE5.7 C++项目为例，新建C++ Plugins项目Test01以测试。]]></description><category></category></item><item><title><![CDATA[UE5制作六边形包裹球体效果]]></title><link>https://blog.csdn.net/grayrail/article/details/161316196</link><guid>https://blog.csdn.net/grayrail/article/details/161316196</guid><author>grayrail</author><pubDate>Fri, 22 May 2026 14:48:23 +0800</pubDate><description><![CDATA[在科幻题材的视觉表现中，常出现由六边形与五边形组成的盾状结构，象征防御护甲等效果。本文将讲解如何在UE5中构建这样的球体护盾。]]></description><category></category></item><item><title><![CDATA[Houdini建模制作模型车架]]></title><link>https://blog.csdn.net/grayrail/article/details/161209008</link><guid>https://blog.csdn.net/grayrail/article/details/161209008</guid><author>grayrail</author><pubDate>Tue, 19 May 2026 09:37:56 +0800</pubDate><description><![CDATA[本文使用Houdini的建模节点，配合bbox等命令建造可自由适配的车架模型结构，阅读本文可熟悉Houdini基础建模节点的使用。]]></description><category></category></item><item><title><![CDATA[UE5 GameFeature创建与使用]]></title><link>https://blog.csdn.net/grayrail/article/details/160889632</link><guid>https://blog.csdn.net/grayrail/article/details/160889632</guid><author>grayrail</author><pubDate>Fri, 08 May 2026 13:54:26 +0800</pubDate><description><![CDATA[UE5 的 GameFeature 机制，本质是将游戏功能拆解为独立的、可动态加载/卸载的模块。其设计目标聚焦于以下工程问题]]></description><category></category></item><item><title><![CDATA[UE5 Lyra GameplayMessageRouter]]></title><link>https://blog.csdn.net/grayrail/article/details/160855423</link><guid>https://blog.csdn.net/grayrail/article/details/160855423</guid><author>grayrail</author><pubDate>Thu, 07 May 2026 13:28:02 +0800</pubDate><description><![CDATA[GameplayMessageRouter是全局消息系统，使用了Gameplay Tag作为channel筛选。位于Plugins目录；与项目没有耦合。]]></description><category></category></item><item><title><![CDATA[UE5 使用Lyra AsyncMixin进行异步加载]]></title><link>https://blog.csdn.net/grayrail/article/details/160817561</link><guid>https://blog.csdn.net/grayrail/article/details/160817561</guid><author>grayrail</author><pubDate>Wed, 06 May 2026 11:10:26 +0800</pubDate><description><![CDATA[AsyncMixin 是 UE5 Lyra 项目中一个核心的 C++ 工具类，主要用于安全、方便地管理异步操作，比如资源加载、数据请求等。]]></description><category></category></item><item><title><![CDATA[UE5 两种方式解决Decal Actor贴花拉伸问题]]></title><link>https://blog.csdn.net/grayrail/article/details/160409695</link><guid>https://blog.csdn.net/grayrail/article/details/160409695</guid><author>grayrail</author><pubDate>Wed, 22 Apr 2026 15:29:29 +0800</pubDate><description><![CDATA[在使用Decal Actor组件放置贴花时，常会遇到拉伸（竖纹）问题。以下是两种常见的解决方法]]></description><category></category></item></channel></rss>