专题介绍
该专题将会分析 LOMCN 基于韩版传奇 2,使用 .NET 重写的传奇源码(服务端 + 客户端),分析数据交互、状态管理和客户端渲染等技术,此外笔者还会分享将客户端部分移植到 Unity 和服务端用现代编程语言重写的全过程。
概览
在这一篇文章中,我们将分析角色如何接收用户输入,产生和处理行为 (Action),并以角色的移动为例分析处理和绘制逻辑。
行为系统
对于每个地图对象 MapObject,都会有一个行为队列 ActionFeed,以及代表当前行为的 CurrentAction 变量:
// MapObject.cs
public abstract class MapObject
{
public List<QueuedAction> ActionFeed = new List<QueuedAction>();
public QueuedAction NextAction
{
get { return ActionFeed.Count > 0 ? ActionFeed[0] : null; }
}
public MirAction CurrentAction;
}
注意这里的 NextAction 是一个计算属性,用于取出 ActionF