<?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>Algorithm on Zhao Weidong Home Page</title><link>https://wdongz.github.io/blog/tags/algorithm/</link><description>Recent content in Algorithm on Zhao Weidong Home Page</description><generator>Hugo -- 0.154.4</generator><language>en-us</language><lastBuildDate>Mon, 05 Jan 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://wdongz.github.io/blog/tags/algorithm/index.xml" rel="self" type="application/rss+xml"/><item><title>Unity 角色智能决策架构演进：从 FSM 到 GOAP 的技术选型与实现</title><link>https://wdongz.github.io/blog/posts/my-first-game-project/</link><pubDate>Mon, 05 Jan 2026 00:00:00 +0000</pubDate><guid>https://wdongz.github.io/blog/posts/my-first-game-project/</guid><description>&lt;p&gt;在现代游戏开发中，非玩家角色（NPC）的行为逻辑是构建沉浸感的核心要素。随着游戏玩法的日益复杂，简单的脚本化逻辑已难以满足需求。在 Unity 生态中，有限状态机（Finite State Machine, FSM）、行为树（Behavior Tree, BT）与目标导向行动规划（Goal-Oriented Action Planning, GOAP）是三种主流的 AI 决策架构。&lt;/p&gt;
&lt;p&gt;本文将从工程实现角度深入剖析这三种架构的运行机制，对比其优劣，并探讨在不同业务场景下的技术选型策略。&lt;/p&gt;
&lt;h2 id="一-有限状态机fsm确定性的基石"&gt;一、 有限状态机（FSM）：确定性的基石&lt;/h2&gt;
&lt;p&gt;有限状态机是游戏 AI 中最古老且基础的架构。其核心理念是将 AI 的行为分解为离散的“状态”（State），并通过预设的“条件”（Condition）在状态之间进行转换（Transition）。&lt;/p&gt;
&lt;h3 id="11-技术实现机制"&gt;1.1 技术实现机制&lt;/h3&gt;
&lt;p&gt;在 Unity 中，FSM 的实现通常经历两个阶段的演进：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;基于 Switch-Case 的硬编码&lt;/strong&gt;：适用于原型阶段，但在逻辑扩展时极易导致代码臃肿。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;基于状态模式（State Pattern）的面向对象封装&lt;/strong&gt;：将每个状态封装为独立的类（继承自 &lt;code&gt;BaseState&lt;/code&gt;），拥有 &lt;code&gt;Enter&lt;/code&gt;、&lt;code&gt;Execute&lt;/code&gt;、&lt;code&gt;Exit&lt;/code&gt; 三个生命周期方法。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;状态机的运行依赖于严格的图论逻辑：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;stateDiagram-v2
[*] --&amp;gt; Idle
Idle --&amp;gt; Patrol: 计时器结束
Patrol --&amp;gt; Chase: 发现玩家
Chase --&amp;gt; Attack: 距离 &amp;lt; 攻击范围
Attack --&amp;gt; Chase: 距离 &amp;gt; 攻击范围
Chase --&amp;gt; Patrol: 玩家丢失
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="12-架构局限性"&gt;1.2 架构局限性&lt;/h3&gt;
&lt;p&gt;FSM 的最大优势在于&lt;strong&gt;确定性&lt;/strong&gt;与&lt;strong&gt;低计算开销&lt;/strong&gt;。每一时刻 AI 处于且仅处于一个状态，调试路径清晰。&lt;/p&gt;
&lt;p&gt;然而，当 AI 逻辑变得复杂（例如一个角色拥有 20 种状态）时，FSM 面临“转换爆炸”问题。每增加一个新状态，可能需要定义它与现有所有状态的转换关系，导致维护成本呈指数级上升（$O(N^2)$ 的复杂度）。虽然 Unity 的 Animator Controller 本质上是一个可视化 FSM，但在处理纯逻辑（非动画）时，连线过于复杂会导致“面条式”图表，难以阅读。&lt;/p&gt;</description></item></channel></rss>