オブジェクトが何であるかに基づいてコンテキストメニューを設計する方法
「右クリックオプション」動作のソリューションを探しています。 基本的に、ゲーム内のすべてのアイテムは、右クリックすると、オブジェクトが何であるかに基づいて一連のオプションを表示できます。 さまざまなシナリオの例を右クリックします。 インベントリ:ヘルメットはオプション(装備、使用、ドロップ、説明)を表示します 銀行:ヘルメットにオプションが表示されます(テイク1、テイクX、すべてテイク、説明) フロア:ヘルメットはオプションを表示します(テイク、ここを歩く、説明) 明らかに、各オプションは、言われていることを行う特定の方法を何らかの形で指し示しています。これは、私が理解しようとしている問題の一部です。単一のアイテムに非常に多くのポテンショニングオプションがあるのに、クラスを非常に乱雑にならないように設計するにはどうすればよいですか? 私は継承について考えましたが、それは本当に長くかかり、チェーンが巨大になる可能性があります。 インターフェイスを使用することを考えましたが、Xmlファイルからアイテムデータをロードして汎用の「Item」クラスに配置することができないため、これはおそらく少し制限されます。 Runescapeと呼ばれるゲームに基づいて、目的の最終結果を作成しています。ゲーム内ですべてのオブジェクトを右クリックすると、オブジェクトの種類や場所(インベントリ、フロア、銀行など)に応じて、プレーヤーが操作できるさまざまなオプションセットが表示されます。 これをどのように達成しますか?まず、どのアプローチをとるべきか、どのオプションを表示すべきかを決定し、クリックしたら、対応するメソッドを呼び出す方法を決定する必要があります。 私はC#とUnity3Dを使用していますが、実際のコードとは対照的にパターンを追っているので、提供された例はどちらにも関係する必要はありません。 どんな助けでも大歓迎です。質問や希望する結果が明確でない場合は、コメントを投稿してください。できるだけ早く対応します。 ここに私がこれまで試したものがあります: 私は実際に、さまざまな種類のアイテム(追加攻撃、追加防御、コストなど)のすべての値を保持する一般的な「アイテム」クラスを実装することができました。これらの変数には、Xmlファイルのデータが入力されます。 可能な限りすべての対話メソッドをItemクラス内に配置することを考えましたが、これは信じられないほど面倒で貧弱なフォームだと思います。おそらく、1つのクラスのみを使用し、異なるアイテムにサブクラス化することにより、この種のシステムを実装するための間違ったアプローチを取っていますが、Xmlからデータをロードしてクラスに保存できる唯一の方法です。 Xmlファイルからすべてのアイテムをロードすることを選択した理由は、このゲームが40,000以上のアイテムを使用できる可能性があるためです。私の数学が正しければ、各アイテムのクラスは多くのクラスです。