プロパティ変更のためにインスタンス化されたオブジェクトのイベントハンドラーを作成することは可能ですか?
例:私はオンラインゲームを持っています。キャラクターがログインするとキャラクターデータを保存するPlayerオブジェクトの内部にインスタンスを作成するIOClientと呼ばれるクラスがあります。
その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/モンスターデータを送信する必要があります。このケーススイッチがイベントハンドラー内にある場合、スイッチケースを常に呼び出す必要なしに、テレポート、ポータルへのウォークイン、gmテレポートなどのさまざまな場所からマッププロパティを変更できます。