そこで私は C# XNA 4.0 で 2D ゲームを作成していますが、またしても些細な問題に出くわしました。長方形。_ 基本的なコリジョンを使用する場合、これはほぼ必須です。作成されたほとんどすべてのゲーム オブジェクトには、長方形が必要です。次に、X を変更したり、衝突をチェックしたり、その他のことを行います。そして、終わりなき戦いが始まるobjectName.Rectangle.Whatever
。これを回避するために、もちろん、これらにアクセスする objectName プロパティ/メソッドのクラスを提供します。
それから私はあえて夢を見ました。すべてのドローアブルが継承される基本的なゲーム オブジェクト クラスを作成し、ペアレント化、正確なローカル座標 (フロート)、およびテクスチャ/スプライト バッチの保持を可能にする壮大な設計がありました。これを完成させるために、Rectangle から継承し、Rectangle が保持するすべてのメソッドと属性を使用する準備ができました。何かが Rectangle を必要とするときはいつでも、objectName.Rectangle ではなく、objectName と言うほど怠惰になることがあります。
それから私は気づいた、チャンスではありません。私の非常に賢いアイデアが粉々に砕かれたので、私は最初は落ち込んでいました。それ以来、私の完璧な小さなクラスは四角形を保持し、必要に応じてそれにアクセスするさまざまなメソッドとプロパティを備えています。また、XNA DrawableGameComponent から継承する機会もありました。長い目で見れば、これはより実用的でしたが、draw メソッドや update メソッドを表示し、rectangle の呼び出しを見るたびに、自分が望んでいたことを実行する希望はあったのだろうかと疑問に思うことがよくあります。私ができたはずの巧妙な回避策はありましたか?それとも、Rectangle から継承して、私の手から本当に封印されていたのでしょうか?
XNA で提供される DrawableGameComponent クラスを使用すると、ほとんどのゲーム オブジェクト関連のアクションをクラスの Update() メソッド内で発生させることができますが、クラスの外では毎回、Rectangle のプロパティではなく Rectangle 自体を参照する必要があります実際、私のオブジェクトはあらゆる点で、実際には、強化された Rectangle であることを考えると腹が立ちます。そして、もう一度、私は自分自身に尋ねることができます:
事前定義された構造体から継承する方法、またはプロジェクトにあなたの印象を与える方法はありますか (回避策)?