私は戦略ゲームを作っていて、問題の一種を見つけました。基本的には、私が必要とするユニットの動的な作成に対処する方法がわかりません。大きなswitch文を使うべきか、より理想的な解決策があるのでしょうか?多くのオブジェクトを扱う
答えて
あなたは本質的に、実行時にさまざまな種類のクラスをインスタンス化することを話しています。可能性は多数ある:)
1つのオプションは次のとおりです。
あなたがそうのように、キーはあなたの「単位」の識別子で、値がクラスオブジェクトであるマップ(基本的にオブジェクト)を、管理します。
var unitMap:Object = {
"hero": UserGameCharacter,
"enemy": NPCharacter,
"chicken": ChickenCharacter
};
値はインスタンスではなくクラスオブジェクトであることに注意してください。さらに、すべての文字クラスが基本Characterクラスを拡張するか、Characterインターフェイスを実装すると仮定しましょう。
var newCharacter:Character = new (unitMap["hero"])();
このようにして、switch文を使用する必要はありません。これで、「ユニット」をインスタンス化することができます。希望、これは出発点として役立ちます。
建設作業が必要な複数の種類のエンティティを動的に作成する場合は、常に抽象ファクトリを使用してください。それはあなたのゲームをより柔軟でモジュラーにします。特に戦略ゲームでは、各ユニットを構築する複雑なロジックを持つことがあります。
http://www.as3dp.com/2010/11/saturated-abstract-factory-1-wholesale-creation/
私の時間は限られています(このゲームは大学のプロジェクトです)ので、締め切り前に上記の解決策を理解して実装することはできません。ありがとうございました。 – MKII
あなたはまた、ボックス機能のうちいくつかは、すべての種類のゲームオブジェクトに対処するために提供されるプッシュボタンエンジン、見てみたいことがあります。以下の記事をご覧ください。 Dependency Injection機能は、オブジェクトの使用と作成を切り離すための良い方法です。
上記のように、これは私ができるだけ早く詳細に調べるものです。ありがとうございました。 – MKII
- 1. 多数のオブジェクトを扱う
- 2. luigiの多くのパラメータを扱う
- 3. 多くのブランチを扱うGIT
- 4. 多くのソケットを.NETで扱う
- 5. java jdbcデザインパターン:多くのインサートを扱う
- 6. 多くのドロウアブルを扱う方法
- 7. 多くの荷物を扱うドッカーコンテナ
- 8. 多くの投稿を扱うページネーション
- 9. 多くの入力を扱う(Matlab)
- 10. onClickを同じ配列の多くのオブジェクトにどのように扱うか
- 11. Django - フィルタリング中に多対多オブジェクトを1つのエンティティとして扱う
- 12. 多くの重みを持つネットワークのメモリ問題を扱う
- 13. Angularの多くのオプションのパラメータを扱う最良の方法
- 14. "現実の世界"のIoC - 多くのクラスを扱う方法?
- 15. XCTestCase - iOS UIテスト - 多くのセルを持つUITableViewを扱う
- 16. 相対パス - 多くのディレクトリを離れたファイルを扱う
- 17. 多くの種類のメッセージを扱う一般的な方法
- 18. 多くの単一の関数を扱うベストプラクティス
- 19. 多くのレベルの要素を扱うR機械学習パッケージ
- 20. AngularJSの多くの解決策を扱う
- 21. MYSQLと正規化:多くのオプションフィールドを扱う方法は?
- 22. Xamarinラッパー地獄 - 多くの外部依存関係を扱う
- 23. ASP.NET MVC 3または4 - 多くのDBを扱う方法
- 24. Golangでは、チャンネルで多くのゴルーチンを扱う方法
- 25. OpenGL:多くのテクスチャ/画像を扱う方法は?
- 26. 多くの目に見えない要素を扱う
- 27. 多層アプリケーションのビューを扱う方法
- 28. Three.js - 多数のインスタンスを扱う
- 29. スカラ - ヌルJSONオブジェクトを扱う
- 30. C#XNA、たくさんのオブジェクトを扱う、
オム...だから、基本的権利、列挙のようなものを作成し、私が作成する必要があるクラスのコンテナとしてCharacterオブジェクトを使用できますか?しかし、もし必要ならオブジェクトのコンストラクタをどのように使うことができますか? unitMap ["hero"](arg)のようなものは動作しますか? – MKII
はい、正しい、それは動作します。ところで、もちろん、作成したいクラスを直接参照することもできます。私が思ったのは、作成するクラスが基本クラスを拡張したり、使いやすいようにインターフェイスを実装したりする場合に役立つかもしれません。それは私が "キャラクター"を参照していたものです。 – ghost23
さて、わかりました。ありがとうございました。 – MKII