韩版传奇 2 源码分析与 Unity 重制(五)地图对象的行为处理

专题介绍

该专题将会分析 LOMCN 基于韩版传奇 2,使用 .NET 重写的传奇源码(服务端 + 客户端),分析数据交互、状态管理和客户端渲染等技术,此外笔者还会分享将客户端部分移植到 Unity 和服务端用现代编程语言重写的全过程。

概览

在这一篇文章中,我们将分析角色如何接收用户输入,产生和处理行为 (Action),并以角色的移动为例分析处理和绘制逻辑。

行为系统

对于每个地图对象 MapObject,都会有一个行为队列 ActionFeed,以及代表当前行为的 CurrentAction 变量:

// MapObject.cs
public abstract class MapObject
{
    public List ActionFeed = new List();
    public QueuedAction NextAction
    {
        get { return ActionFeed.Count > 0 ? ActionFeed[0] : null; }
    }

    public MirAction CurrentAction;
}

注意这里的 NextAction 是一个计算属性,用于取出 ActionFeed 中的下一个行为。

行为的产生

地图对象的行为来自于用户输入或者 AI 行为逻辑,在这里我们需要对用户控制的角色和其他对象做一个区分,其他角色的行为序列是通过服务端同步到客户端的,而用户输入是由输入设备直接产生的,需要加以限制,因此在 UserObjec

你可能感兴趣的:(韩版传奇,2,源码分析与,Unity,重制,c#)