<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Gameplay on DaVinci-13's Blog</title><link>https://davinci-13.github.io/tags/gameplay/</link><description>Recent content in Gameplay on DaVinci-13's Blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 08 Apr 2026 20:30:00 +0800</lastBuildDate><atom:link href="https://davinci-13.github.io/tags/gameplay/index.xml" rel="self" type="application/rss+xml"/><item><title>动画插件 Fresh Cooked Tween 入门：让 UE5 动画插值更顺手</title><link>https://davinci-13.github.io/posts/fresh-cooked-tween-intro/</link><pubDate>Wed, 08 Apr 2026 20:30:00 +0800</pubDate><guid>https://davinci-13.github.io/posts/fresh-cooked-tween-intro/</guid><description>&lt;h2 id="前言"&gt;前言&lt;/h2&gt;
&lt;p&gt;在 UE5 日常开发里，我们经常需要做各种“过渡动画”：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;UI 面板淡入淡出&lt;/li&gt;
&lt;li&gt;物体平滑移动和缩放&lt;/li&gt;
&lt;li&gt;相机参数渐变&lt;/li&gt;
&lt;li&gt;数值从 A 过渡到 B（例如血条、进度条）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些需求可以用 Timeline、动画蓝图或手写 Tick 实现，但当项目里“轻量过渡动画”越来越多时，代码和蓝图会逐渐分散。Fresh Cooked Tween 这类 Tween 插件的价值，就是把这类逻辑统一成更高复用、可读性更好的工作流。&lt;/p&gt;
&lt;h2 id="1-fresh-cooked-tween-是什么"&gt;1. Fresh Cooked Tween 是什么&lt;/h2&gt;
&lt;p&gt;Fresh Cooked Tween 是面向 Unreal 的 Tween 动画插件，核心目标是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用更简洁的方式描述“某个值在一段时间内如何变化”&lt;/li&gt;
&lt;li&gt;提供常见缓动（Easing）曲线&lt;/li&gt;
&lt;li&gt;支持回调与链式组织，降低样板代码&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一句话理解：它把“插值过程”从零散的 Tick 逻辑中抽离出来，变成结构化的动画任务。&lt;/p&gt;
&lt;h2 id="2-它解决了什么问题"&gt;2. 它解决了什么问题&lt;/h2&gt;
&lt;h3 id="1-降低样板代码"&gt;1) 降低样板代码&lt;/h3&gt;
&lt;p&gt;手写插值通常要自己管理：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;起始值、目标值&lt;/li&gt;
&lt;li&gt;已经过时间&lt;/li&gt;
&lt;li&gt;每帧更新&lt;/li&gt;
&lt;li&gt;完成回调&lt;/li&gt;
&lt;li&gt;中途取消/中断&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tween 插件会把这些通用步骤封装好，让你聚焦“做什么动画”，而不是重复“怎么驱动时间”。&lt;/p&gt;
&lt;h3 id="2-统一动画语义"&gt;2) 统一动画语义&lt;/h3&gt;
&lt;p&gt;当团队都用统一 Tween 风格时，像“EaseOut、Yoyo、Loop、Delay”这些概念更容易沟通。&lt;/p&gt;
&lt;h3 id="3-适合技术美术协作"&gt;3) 适合技术美术协作&lt;/h3&gt;
&lt;p&gt;对于技术美术和玩法程序协作场景，Tween 非常适合做：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;UI 动效原型&lt;/li&gt;
&lt;li&gt;镜头参数微调&lt;/li&gt;
&lt;li&gt;交互反馈（按钮弹性、悬停位移、提示浮动）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-核心概念入门必懂"&gt;3. 核心概念（入门必懂）&lt;/h2&gt;
&lt;p&gt;无论具体 API 名称如何，Tween 工作流通常都围绕以下概念：&lt;/p&gt;</description></item><item><title>UE5 C++ 脚本常用父类：生命周期、常用属性/函数/委托速览</title><link>https://davinci-13.github.io/posts/ue5-cpp-common-base-classes-lifecycle/</link><pubDate>Sun, 05 Apr 2026 22:00:00 +0800</pubDate><guid>https://davinci-13.github.io/posts/ue5-cpp-common-base-classes-lifecycle/</guid><description>&lt;h2 id="前言"&gt;前言&lt;/h2&gt;
&lt;p&gt;在 UE5 C++ 开发里，“选对父类”几乎决定了脚本的生命周期、可放置位置、初始化时机，以及你能用到哪些系统能力（输入、碰撞、网络复制、UI、动画等）。&lt;/p&gt;
&lt;p&gt;这篇文章按“实战常用频率”整理：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;常见父类分别适合做什么。&lt;/li&gt;
&lt;li&gt;每类对象的核心生命周期顺序。&lt;/li&gt;
&lt;li&gt;常用属性、函数和委托（含高频回调）。&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;说明：本文聚焦入门和日常开发高频内容，细节会因引擎版本和项目架构（单机/联机）略有差异。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="1-uobject一切反射对象的基础"&gt;1. UObject：一切反射对象的基础&lt;/h2&gt;
&lt;h3 id="适用场景"&gt;适用场景&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;纯数据对象&lt;/li&gt;
&lt;li&gt;工具类对象&lt;/li&gt;
&lt;li&gt;不需要直接出现在场景中的逻辑对象&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="生命周期要点"&gt;生命周期要点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Constructor&lt;/code&gt;：构造默认值。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PostInitProperties&lt;/code&gt;：属性初始化后调用。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;BeginDestroy&lt;/code&gt; / &lt;code&gt;FinishDestroy&lt;/code&gt;：销毁流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="常用属性函数"&gt;常用属性/函数&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GetWorld()&lt;/code&gt;：部分上下文可用，不是所有 &lt;code&gt;UObject&lt;/code&gt; 都有有效世界。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GetOuter()&lt;/code&gt;：获取所属外部对象。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;IsValid()&lt;/code&gt;（配合对象指针检查）：避免访问失效对象。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="常见委托"&gt;常见委托&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;UObject&lt;/code&gt; 本身没有像 Actor 那样丰富的生命周期委托，但可以参与你自定义的动态委托系统。&lt;/p&gt;
&lt;h2 id="2-aactor关卡中最核心的可放置对象"&gt;2. AActor：关卡中最核心的可放置对象&lt;/h2&gt;
&lt;h3 id="适用场景-1"&gt;适用场景&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;场景实体（可见或不可见）&lt;/li&gt;
&lt;li&gt;可复制的游戏逻辑载体&lt;/li&gt;
&lt;li&gt;挂组件、处理交互、触发器、机关等&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="生命周期常见顺序"&gt;生命周期（常见顺序）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;Constructor&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OnConstruction&lt;/code&gt;（编辑器放置或属性变更后触发）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PreInitializeComponents&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PostInitializeComponents&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;BeginPlay&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Tick&lt;/code&gt;（启用时每帧）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;EndPlay&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Destroyed&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="常用属性"&gt;常用属性&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;PrimaryActorTick.bCanEverTick&lt;/code&gt;：是否允许 Tick。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bReplicates&lt;/code&gt;：是否参与网络复制。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;NetUpdateFrequency&lt;/code&gt;：网络更新频率。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Tags&lt;/code&gt;：对象标签，快速分类检索。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="常用函数"&gt;常用函数&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;BeginPlay()&lt;/code&gt; / &lt;code&gt;Tick(float DeltaSeconds)&lt;/code&gt; / &lt;code&gt;EndPlay()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SetActorLocation()&lt;/code&gt; / &lt;code&gt;SetActorRotation()&lt;/code&gt; / &lt;code&gt;SetActorTransform()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Destroy()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;HasAuthority()&lt;/code&gt;：联机场景判断服务器权限。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GetComponentsByClass()&lt;/code&gt;：运行时检索组件。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="常见委托-1"&gt;常见委托&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;OnActorBeginOverlap&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OnActorEndOverlap&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OnTakeAnyDamage&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OnDestroyed&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-apawn-与-acharacter可控制角色核心"&gt;3. APawn 与 ACharacter：可控制角色核心&lt;/h2&gt;
&lt;h2 id="31-apawn"&gt;3.1 APawn&lt;/h2&gt;
&lt;h3 id="适用场景-2"&gt;适用场景&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;可被 Controller 控制的对象&lt;/li&gt;
&lt;li&gt;载具、飞行器、棋子等不一定是“人形角色”的可控实体&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="生命周期要点-1"&gt;生命周期要点&lt;/h3&gt;
&lt;p&gt;继承 &lt;code&gt;AActor&lt;/code&gt; 生命周期，同时常见控制链路是：&lt;/p&gt;</description></item></channel></rss>