C#服务端的微信小游戏——多人在线角色扮演(六)

本文详细介绍了如何在C#服务端的微信小游戏中优化地图内容的生成与显示,通过定义GameObject类和ObjectFactory,实现了地图元素的动态加载和优化代码结构,确保游戏地图的丰富性和效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C#服务端的微信小游戏——多人在线角色扮演(六)

用内容清单来实现地图的刷新,根据开发需求的细化来优化代码结构。
——茂叔

地图上来了只小狗

上一篇里,我们成功让游戏世界有了心跳,然而地图上任然空空如也。现在我们要在地图上加入内容GameObject了。
最开始,还是要先把GameObject的基本需求整理一下。由于GameObject继承自Existence,所以标识、名称这些可以不考虑了。除此之外,GameObject还需要下面这些信息:

  1. 位置,地图标识、X、Y
  2. 介绍描述,这是一个程序猿……
  3. 对应清单的ObjectClassId,有了这个,就知道是具体个什么东西或者不是个东西了。例如,这是一把剑,还是一把刀,是关云长的冷艳锯还是是吕奉先的方天戟。
  4. 类型,这是一种武器、一个角色还是一种药物……同一类型的东西具有某些共性,例如武器就都可以装备,而药品都可以服用。
  5. 图像,在客户端显示出来是个什么样子。我们把图像信息分解为图像文件编号和图像编号,这样可以把不同类型的东西放在不同的图像文件里面,方便维护。
  6. 状态,这个东西目前是什么状态,是已经腐烂,还是正在移动,或者是遭到了攻击。
  7. 动作阶段,一个动作可能需要不同的阶段,即便是静止的,也需要有云舒云展或者花开花落,我们需要根据不同的动作阶段在客户端显示不同的图像。
  8. 能不能穿过,一堵墙和一颗小草的区别。
  9. 主人,这是谁扔的?
  10. 物品……怀璧其罪。
    ……

别的以后再补充吧。 给GameObject添加以下成员:

        public string Description;
        public string MapEID;
        public sbyte X;
        public sbyte Y;
        public ushort Category;//类型
        public ushort ClassID;
        public byte Status;
        public byte StatusStep;
        public byte ImgFileID;
        public byte ImgID;
        public bool Passable;
        public GameObject[] Inventory;
        public string OwnerEID;

由于我们需要从地图内容清单来生成内容,这种工作其他地方也会用到,因此,我们定义一个ObjectFactory来完成这个工作。
GameLib项目中添加一个ObjectFactory类。

class ObjectFactory
    {
   
   
        public static GameObject Make(ushort ClassID, Action<string> LOGFUN = null)
        {
   
   
            GameObject ret = null;
            switch (ClassID)
            {
   
   
                case 0://生成一只小狗
                    {
   
   
                        ret = new GameObject(LOGFUN)
                        {
   
   
                            Name = "小狗旺财",
                            Description = "一只小狗,就是你",
                            CanPass = false,
                            ClassID = ClassID,
                            Category = ObjectCategory.ANIMAL,
                            ImgFileID = 0,
                            ImgID = 0,
                            Status = ObjectStatus.IDEL,
                            StatusStep = 0,
                            OwnerEID = null,
                            Inventory = new GameObject[8]//可以带8个物品
                        };
                    }
                    break;
                case 1://生成一只小猫
                    break;
                case 3://生成一块石头
                    break;
                case 4:/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值