3
イベントシステムを設定するより良い方法はありますか?
イベントシステムは驚くべきものであり、非常に扱いにくいコードを飼いならし、オブジェクトとゲームループの簡単な通信を通じてゲームの動的な作成を可能にします。現在の実装の効率に苦労しています。現在、オブジェクトのリストをそれらが応答するイベントに分離するという私のわずかな最適化は不思議に思っていますが、私ができることがもっとあるはずです。 現在、私は2つの方法があります: 最も単純:イベントが送信されると、すべてのオブジェクトがベクターに追加されます。すべてのオブジェクトには、handle_event()メソッドを介してイベントが送信されます。 より複雑:キーが文字列、値が整数のマップがあります。イベントタイプが追加されると、それはこのマップに追加され、intは単純にインクリメントされます(より良い方法が必要 です)。次に、オブジェクトのベクトルのベクトルが新しいベクトルを押し戻し、そのタイプのイベントを処理します。 イベントが呼び出されると、eventTypesマップの対応するintをオブジェクトのベクターのベクター内の型に呼び出し、そのイベントタイプを処理する各オブジェクトにそのイベントを送信します。 これらの最初の方法は、多くのオブジェクトに対して(明らかに)非常に低速ですが、非常に少数のオブジェクトに対しては非常に高速です。2番目の方法は、異なるタイプのイベントを処理したい大きなオブジェクトでは非常に高速ですが、同じタイプのイベントを処理するオブジェクトを使用するオブジェクトごとの最初の方法よりも低速です。 より速い(実行時間に関して)方法はありますか?文字列型からintを検索するより速い方法はありますか?(最初は列挙型がありましたが、必要なレベルのダイナミズムのために必要なカスタム型は許可されていませんでした。)