1

是否可以为属性更改的实例化对象创建事件处理程序?

例如:我有一个在线游戏。有一个名为 IOClient 的类,它在 Player 对象的自身内部创建一个实例,该对象在该角色登录后存储角色数据。

我想创建一个事件处理程序,以便在 Player 对象 Map 属性更改时触发。(这主要是为了处理地图更改,因为您可以使用传送命令或走进门户进入不同的地图)。

大多数属性的事件处理示例必须包含在同一个类中,但我不能从 Player 对象调用数据流写入(因为它是 IOClient 的一部分),所以它不能在那里工作。

更改地图当前如下所示:

            case "village":
                player.X = 8;
                player.Y = 12;
                player.Map = "Village";
                SendPacket(new LoadWorld(player, 1).Compile());
                break;
            case "shop1":
                player.X = 8;
                player.Y = 12;
                player.Map = "shop1";
                SendPacket(new LoadWorld(player, 1).Compile());
                npcshop1.SetShop1();
                SendPacket(new CreateNPC(npcshop1).Compile());
                string shopchat = "Gladrial: Click on me to see the menu.";
                SendPacket(new UpdateChatBox(0xff, 0xff, 1, (short)shopchat.Count(), shopchat).Compile());
                break;

正如您所看到的,每次加载新地图时都需要发送 NPC/Monster 数据。如果此 case 开关位于事件处理程序中,我可以从不同位置更改地图属性,例如传送、进入门户、gm 传送,而无需始终调用 switch 案例。

4

0 回答 0