2016-05-15 4 views
1

私はこの本を手に入れました:Wallace JacksonによるJava 8 Games Developmentの始まり。JavaFXゲームでNodeオブジェクトをGameObjectとして使用すると効率的ですか?

本書の一部では、Nodeオブジェクト(ImageViewクラスを使用)をGameObjectとして使用する方法を教えています.2次元のスペースインベーダー型のゲームを作成しています。 各GameObjectにはスプライトを含むImageViewメンバがあり、ImageViewオブジェクトがシーンのルートに追加されます。 あまりにも多くのノード(エイリアン)の豚があまりにも多くのメモリを持っていませんか?

私が知りたいことは、Nodeオブジェクトを効率的に使用していることか、これらのGameObjectをより効率的に表現する方法があることです。

答えて

0

画面に何かを表示したい場合は、Nodeを使用する以外の方法はありません。シーングラフノードの

基本クラス:ノードのdocumentationから文章のため

ザ。シーングラフは、すべてのアイテムがゼロまたは1つの親を持ち、各アイテムがサブアイテムがゼロの「リーフ」または0以上のサブキーを持つ「ブランチ」のいずれかの のツリーデータセット です。 @fabianのコメントに基づいて

Canvasを使用して、シングル・ノード構造を有することも可能である:

This linkは、このアプローチを確認するための良いスタートすることができます。

+1

あなたの主張は本当ですが、回答が無視される「キャンバス」のようなゲームオブジェクトごとに1つのノードを使用する代わりに... – fabian

+0

ゲームのUIにはノードを、キャンバスには実際のゲームレベル?それは良いかもしれない、そう? – QuantumCookie

+0

はい、キャンバスにイメージを置くことができるので、リンクのチュートリアルのようにゲームレベルにこのteqniqueを使うことができます。 ImageViewsで作業しているゲームを持っていて、ブランチを作成し、キャンバスを使用するように再実装してから、パフォーマンスの違いを確認すると面白いですね:) – DVarga

0

元の答えは、私が感じる、本当に賢いです。 Fabianが正しいです、JavaFXでのレンダリングには本質的に2つのルートがあります。 1つはノードを他のノードに追加し、VBoxはグループに追加するなどです.2つ目はキャンバス経由です。ゲームやその他のパフォーマンス関連アプリケーションの中には、できるだけノードやシーングラフを避けるものがあります。シーングラフの速度の問題は多少議論の余地があります。

実際に質問に答えてください:いいえ、多くの場合、シーングラフとノードの使用は現在効率的ではありません。元の答えは、これらの要素が実際にすべてのノードであることを示すことによって混乱させようとします。しかし、これは有益な答えではありません。キャンバスは、イメージ、プリミティブなどのレンダリングなどの低レベルの描画操作を可能にします。これは、ブレンドモードと不透明度ベースの操作を提供します。しかし、特定のタイプのテキスト書式設定にアクセスしたり、スナップショットを取得したりするには、ノードに入るのが便利です。次に、純粋にキャンバスを使用して、これらの結果を画像に変換し直す場合。

関連する問題