LibGDXゲームとApplicationAdapter


12

新しいLibGDXプロジェクトを作成すると、CoreプロジェクトのメインクラスがApplicationAdapterを拡張します。これがどのように見えるかです。

package com.marimba.apptest;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;

public class AppMain extends ApplicationAdapter {   
    @Override
    public void create () {

    }

    @Override
    public void render () {
        Gdx.gl.glClearColor(1, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    }
}

したがって、画面を切り替えるためにsetScreenメソッドを呼び出す場合は、ApplicationAdapterGameに変更する必要があります。それでは、ApplicationAdapterの使用は何ですか?いつ使用しますか?

回答:


7

@ user3068350が言ったように、GameとApplicationAdapterの両方がApplicationListenerを実装しています。ゲームでScreenインターフェースを使用する場合はGameを拡張すると便利ですが、一部の開発者は独自の方法で別のアプローチを取り、画面管理を処理したい場合があります。この場合、これらはApplicationAdapterを拡張します。

個人的には、レンダリングメソッドをupdateとdrawに分離するため、クラスはカスタムのUpdatableおよび/またはDrawableインターフェースを実装するのが好きです。この場合、インターフェースにはrenderメソッドが含まれているため、Screenを使用すると目的が失われます。


1

GameクラスはApplicationListenerインターフェースを実装し、異なる画面を簡単に切り替えることができるように設計された単なるクラスです。ApplicationListenerのメソッドが呼び出されると、Gameクラスは現在設定されている画面にメソッドを委任します。


1
しかし、いつApplicationAdapterを使用する必要がありますか?そして、ここでスクリーンをどのように使用しますか。
バヘMuradyan

2
ApplicationAdapterを使用する必要はありません。ApplicationAdapterとGameの両方がApplicationListenerインターフェイスを実装します。アダプタクラスは、インターフェイスのスケルトン実装を提供するクラスにすぎないため、空のメソッド本体でコードを乱雑にする必要はありません。Gameで画面を使用するには、setScreenを呼び出して、Screenインターフェースを実装するクラスを渡します。画面クラスでコンストラクター内のGameオブジェクトを使用できるようにして、画面内の画面を変更できるようにします。
user3068350

1
なぜ用途がないのにApplicationAdapterを作成したのでしょうか?
バヘMuradyan

2
@VaheMuradyan、ユーザーはすでに答えました:空のメソッド本体でコードを乱雑にする必要はありません。あなたが実装する場合ApplicationListener、直接、あなたは(のようなあなたが必要としないことも含め、必要なすべての方法、提供する必要がありますpause()resume()常に使用されていません)。ApplicationAdapterあなたの便宜のためにそこにありますので、空のメソッドを保持する必要はありません。これは単純なユーティリティクラスであり、新しい機能は追加しません。コードをより簡潔に(またはより短く)維持します。
JustACluelessNewbie

1

ApplicationAdapterとGameクラスはApplicationListenerインターフェイスを実装しているため、ゲームを作成する際に両方をほぼ同じように使用できます。Screenを使用するように設定されている場合、両方のオプションでそれらを実装することを妨げるものは何もありません。

ゲームのクラスには、画面を使用してそれをより多くのオーバーヘッドがほとんどありません。ただし、このオーバーヘッドは、ゲームでさまざまなステージ/レベルを簡単に実装できるように設計されています。このオーバーヘッドは最小限であることに注意することが重要です。

ApplicationAdapterは、追加のオーバーヘッド(これはApplicationListenerの直線実装である)を有していません。これにより、すべてを自分で行う必要があるため、より詳細に制御できます。個人的には、ApplicationAdaptersを使用することを好みます。

TL; DR:それらの間に実質的な違いはありません。ApplicationAdapterを使用すると、もう少し制御しやすくなり、ゲームの作業が少し少なくなります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.