4

個人的なプロジェクトとして、非常に単純な RTS ゲームを作成中です。これまでいくつかの実験的な作業を行ってきましたが、タイル、カメラ、およびユニットの動きは正常に機能しています :)

しかし、ユニット選択システムに機能を追加したかったのですが、いくつか疑問が生じました。ユニットのリストを含む Player クラスがありますが、主にいくつかのグループを作成し、それらのグループに簡単にアクセスするための属性ショートカットを作成するために、Squad クラスを作成したいと考えていました。グループにユニットを追加したい場合は、新しいグループに追加する前に、現在のグループからユニットを削除する必要があります。AddUnit メソッドは Squad クラスにありますが、ユニットをチェックして削除するために追加する新しいユニットごとに、他のすべての分隊を検索したくありません。Unit クラス内で所有者分隊への参照を保持するとどうなりますか? そうすれば簡単に取り外せますが、大丈夫ですか?ユニットを別のプレイヤーに転送したい場合も同じ問題が発生します。ユニット内のプレイヤーへの参照を保持できますか? まあ、私はできることを知っています、しかし、それは受け入れられるでしょうか?代替手段はありますか?

4

3 に答える 3

3

言語がサポートしている場合は、弱参照を使用して、ユニットの分隊を明示的にnullに設定しなくてもコンテナを適切に解放できるようにする必要があります。これにより、エラーが発生しやすくなります。

于 2012-05-10T06:04:09.670 に答える
3

はい、問題ありません。双方向の参照を使用することをお勧めします。コンテナからアイテムへ、アイテムからコンテナへ。アイテム (この例では Unit) で何かを行う場合、すべてのコンテナーでこのアイテムを検索しなくても、そのコンテナーを取得する方がはるかに簡単です。unit からの参照の取得は、より簡単で、より速く、より読みやすくなります - それは単により良い設計です.

于 2012-05-10T04:42:07.137 に答える
0

@dantuch が一般的に受け入れられるという点で同意しますが、ユニットと分隊 (およびプレイヤー) の概念をどの程度緊密に結び付けたいかによって、この時点でそれが良いアイデアであるかどうかを判断できるのはあなただけです。

分隊なしでユニットについて話すのは理にかなっていますか? それともプレーヤーなしですか?

追加の質問であなたの質問に答えていることは承知していますが、モデルについて抽象的な方法で考えてみると、これらの概念を密結合することが許容されるかどうか、または前述のオブザーバー パターンのようなものを使用することが望ましいかどうかがわかります。コメントで。

于 2012-05-10T09:45:25.743 に答える