C#开发的OpenRA游戏之网络接收后找到游戏对象
OpenRA游戏里,从网络接收到数据包之后,
就需要反序列化这个数据包,然后拆出来各个字段的数据,
再从各个字段里找到对应的信息,再把这个动作交给游戏世界里的对象执行。
从前面分析可知,要找到游戏世界里的对象,就需要游戏对象的ID,
如下代码:
Actor subject = null;
if (flags.HasField(OrderFields.Subject))
{
var subjectId = r.ReadUInt32();
if (world != null)
TryGetActorFromUInt(world, subjectId, out subject);
}
在这里首先判断返回的数据包是否有这个Subject字段,如果有这个字段,
就开始读取一个32位的ID,再通过这个ID到游戏世界里找到游戏对象。
TryGetActorFromUInt(world, subjectId, out subject)就是实现从游戏世界里找到游戏对象,并保存在变量subject。
这样就完成找到游戏对象,后面接着传送给命令对象Order:
Order(order, subject, target, targetString, queued, extraActors, extraLocation, extraData, g
本文介绍了在C#开发的OpenRA游戏中,如何处理网络接收的数据包,反序列化后根据ID找到游戏对象,并执行相应命令。通过分析代码,展示了从数据包到命令执行的过程,包括查找游戏对象、验证命令有效性及执行命令的详细步骤。
订阅专栏 解锁全文
387

被折叠的 条评论
为什么被折叠?



