是否可以为属性更改的实例化对象创建事件处理程序?
EX:我有一个在线游戏。有一个名为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数据。如果这个案例开关在一个事件处理程序中,我可以从不同的位置更改map属性,例如teleport,走进一个门户,一个gm teleport而不需要总是调用switch case。