3

libgdx を使用して Android 用のゲームを開発していますが、EditText や Button などの Android UI 要素を作成する方法を考えています。Androidでしか機能しないことを理解しているので、次のようなものを作成します。

if (Gdx.app.getType() == Application.ApplicationType.Android ) {
...
}

Scene2d.ui が役立つかもしれないことがわかりましたが、scene2d (アクター、ステージなど) を使用しておらず、あまり慣れていません。代わりに、次のような Screen を使用しています。

public class GameScreen implements Screen {
...
}

ゲームのプロトタイプ防御 (libgdx で作成) で、これが可能であることを見てきました。

4

2 に答える 2

2

Android 固有のコードはすべて、Android バックエンドに存在する必要があります。共通プロジェクトで Android 固有のコードを使用することはできません。

現在のすべての libGDX UI 要素は、OpenGL に基づいたカスタム要素です (したがって、libGDX がサポートするすべてのプラットフォームである程度一貫しています)。Android UI プリミティブをラップする要素はありません。ボタン、ラベル、リストなどの単純なものについては、移植性のために libGDX UI コンポーネントを使用することをお勧めします。テキスト入力やプラットフォームとの対話 (共有など) などのより複雑な要素については、プラットフォーム固有のコードを呼び出すための標準の「インターフェイスの定義」メソッドを使用できます。

具体的には、ユーザーが自分の名前を入力するためのダイアログ ボックスをポップアップ表示するとします。定義

public interface PlatformUI {
   public void showHighscoreNameEdit();
}

次に、Android プロジェクトで、Android プリミティブを使用してクラスにこのインターフェイスを実装します。次に、このオブジェクトのインスタンスを共通コードのコンストラクターに渡します。これで、共通コードは Android レイヤーを「呼び出す」ことができます。

Android の初期化コードでは次のようになります。

AndroidUI androidUI = new AndroidUI(...);
initialize(new Game(androidUI));

プラットフォーム コードでは次のようになります。

if (timeToShowEditBox) {
  androidUI.showHighscoreNameEdit();
}

@android 開発者が指摘しているように、AdMobInLibgdx wiki ページでは、Android 固有の AdMob ライブラリを呼び出すことを意図してこれをカバーしています。これはこの場合非常に似ています。

于 2012-12-09T17:24:40.377 に答える