1

作業中のゲーム用に作成したカスタム UI ウィジェット ライブラリがあります。描画順序を検討し、現在持っているものにレトロフィットする必要がありますが、そうする最善の方法がわかりません. xml ファイルからウィジェットをロードする UI クラスがあります。キーがウィジェットの文字列名であるマップにすべてのウィジェットを格納します。

ウィジェットは、親子関係で他のウィジェットを保持できます (そのため、ウィジェット クラスには、名前がキーとなるウィジェットのマップがあります)。描画するときは、UI ウィジェット マップをループして、親 (最上位) を持たないウィジェットの Draw() 関数のみを呼び出します。各ウィジェットの Draw() 内で、その子をループし、それらの Draw() 関数を呼び出します。

問題は、文字列キー名でウィジェットを簡単に見つけるのが好きなので、各ウィジェットの並べ替え順序変数をマップを保持しながら並べ替え順序変数の順序で描画する良い方法は何でしょうか?

何か案は?

4

1 に答える 1

1

同じ商品セットを複数の方法で注文する必要がある場合は、次の 2 つの選択肢があります。

  • 両方の注文を保存する、または
  • 1 つの注文を保存し、その場でもう 1 つの注文を把握する

順序付けの 2 番目のセットを格納することは、メモリを使用して CPU サイクルを節約する方法です。

あなたの場合、名前からウィジェットへのマップによって実装された順序と、描画順序の順序の 2 つの順序があります。次の 3 つの実装の選択肢があります。

  • ウィジェットをマップに保存し (つまり、名前順)、描画順序を把握する必要があるたびにトポロジカル ソートを実行します。ここでは、描画を順序付けする理由は、親が子よりも前に描画されるようにすることであると想定しています。トポロジカルソート。
  • ウィジェットを描画順でリストに保存し、リニア ルックアップを実行してウィジェットを名前で取得する- これは、ウィジェットを頻繁に描画するが、名前で検索する頻度が非常に低い場合に適したオプションです。
  • ウィジェットをマップに保存し (つまり、名前順に並べて)、ウィジェットまたはウィジェット名のいずれかの個別のリストを描画順序に従って配置します。・描き順で並べる。
于 2013-02-24T12:11:23.603 に答える