カスタム エンティティを作成し、実行時にその機能を組み立てることができるエンティティ コンポーネント システムがあります。このプロセスは、新しい Entity インスタンスを作成してから、それらにコンポーネント インスタンスを追加することで構成されます。欠点は、オブジェクトの X 座標を変更するたびに、やらなければならないことですobj.GetComponent<TransformComponent>().X
。これは醜いです。
もちろん、エンティティを拡張し、いくつかの固定コンポーネントが追加されたクラスを作成し、それらのコンポーネントにプロパティの形式で省略形を追加して、X 座標を変更したいときにobj.Transform.X
. より良い解決策がない場合、これが私の選択肢になりますが、これらの省略形をエンティティのサブクラスに追加する一般的な方法があれば、私はもっと好きです。たとえば、Transform プロパティを定義する ITransformable という名前のインターフェイスを作成できますが、その場合、すべてのクラスにそのプロパティの同一の実装を含める必要があり、冗長です。
私が検討したもう 1 つのオプションは、インターフェイスを持ち、それらを拡張メソッドのマーカーとしてのみ使用することです。次にTransform()
、正しいコンポーネントを取得する ITransformable の拡張メソッドとして実装されたメソッドを呼び出すことができます。これの問題は、インターフェイスを Entity クラスのみに制限できないため、拡張メソッドで GetComponent メソッドにアクセスできないことです。また、Transform().X
見た目もかなり醜いです。型キャストを行うことはできましたが、それは深刻なハックになりつつあります。
他にまともなオプションはありますか?