web-dev-qa-db-ja.com

スプライトとアクターのlibgdxの違い

私はlibgdxに関するjavadocとさまざまなチュートリアルを実行しているだけであり、libgdxに似ている、または同様の機能を提供しているさまざまな概念の違いを理解しようとしている段階です。

最初は、scene2dはメニューなどのインタラクティブなアイテムの作成に関するものだと思っていましたが、私が読んでいるさまざまなチュートリアルでは、主要なゲームアイテム(プレーヤーなど)にscene2d/actorsを使用し、他の人はスプライトを使用しています。

ゲームでSpriteとActor(つまりscene2D)を使用することの違いは何ですか?いつ選択する必要がありますか?

ありがとう。

33
Neil Walker

Spriteは基本的に、位置、サイズ、回転を備えた画像です。 SpriteBatch を使用して描画し、SpritesとSpriteBatchを取得したら、簡単な低レベルの方法で取得します画面上の任意の場所にある2D画像。後は君しだい。

一方、Actorはシーングラフの一部です。それはより高いレベルであり、単に画像を配置するだけでなく、シーングラフに入る多くのものがあります。シーングラフのルートはStageであり、それ自体は表示されません。 Stageは、追加するActorsのコンテナーであり、シーンの整理に使用されます。特に、入力イベントはStageを介して適切なActorに渡され、StageActorに描画するように指示するタイミングを認識します。たとえば、タッチイベントは、タッチされたActorにのみ送信されます。

ただし、ActorにはSpriteのようなテクスチャが含まれていないことに注意してください。代わりに、おそらく Image を使用する必要があります。これは、単なるActorよりもSpriteに近いActorのサブクラスです。 Actorの他のサブクラスにはテキストなどが含まれます。

Actorsのもう1つの大きな利点は、Actionsを使用できることです。これらは big topic ですが、基本的にはそのActorの一連のイベント(フェードイン、移動など)を計画し、その後、自分で発生するようにすることができますそれらを設定します。

したがって、基本的にActorは、グラフィカルフレームワークの一部であるため、Spriteよりも多くのことを行います。

71
Steve Blackwell

それは多かれ少なかれ味の問題です。アクションとステージを使用する場合は、アクターを使用します。アクターを直接描画することはできません。描画メソッドをオーバーライドする必要があります。内部描画では、スプライトを使用できます。