8

UI要素を含むlibgdxのscene2d機能について読んだことがありますが、それらを機能させることができません。それらはすべてスキン オブジェクトを使用しているようですが、どうすれば作成できますか?

バケツで雨滴をキャッチする単純な libgdx ゲームを作成する素晴らしいチュートリアルを実行し、テクスチャ アトラスで画像をロードして単純なボード ゲーム アプリを作成しまし。ただし、シーン 2d は、ボード ゲーム アプリで動くピースや、ボタンやメニューを制御するための優れた方法のように思えます。

4

2 に答える 2

20

スキンをロードするには、libgdx テスト プロジェクトで使用されるサンプル スキン ファイルから開始できます。

  1. Atlaspack ファイル
  2. Json ファイル
  3. アトラスパック画像
  4. フォントファイル

この質問にはもう少し詳細があり、HTML バージョンのバグを回避するには、ファイルをアセットのサブディレクトリに移動する必要があることがわかりました。(assets フォルダーにファイルを残すと、「GwtApplication: exception: Error reading file data/uiskin.json.」のようなエラー メッセージが表示されます。)

1 つのボタンを表示する完全な例を投稿しました。興味深いコードはすべてゲーム クラスにあります。この例は非常に単純であるため、シーンとボタンを保持するために必要なメンバー変数は 2 つだけです。

private Stage stage;
private TextButton button;

スキンを作成するには、データ ファイルをロードするだけです。

Skin skin = new Skin(Gdx.files.internal("data/uiskin.json"));

ボタンをステージに配線します。

stage = new Stage();
button = new TextButton("Click Me!", skin);
stage.addActor(button);

リスナーをボタンに接続し、ステージを登録してイベントを受け取ります。

button.addListener(new ClickListener() {
    @Override
    public void clicked(InputEvent event, float x, float y) {
        button.setText("Clicked!");
    }
});
Gdx.input.setInputProcessor(stage);

メソッドは基本的に へのrender()呼び出しstage.draw()です。

Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

stage.act(Math.min(Gdx.graphics.getDeltaTime(), 1 / 30f));
stage.draw();

次に、サイズ変更時に画面をレイアウトするだけです。

button.setPosition(
        (width-button.getWidth())/2, 
        (height-button.getHeight())/2);

画面がより複雑な場合は、Tableの使用を検討してください。

別のフォントを使用する場合は、 Hieroを使用してフォント ファイルと画像ファイルを生成できます。それが完了したら、新しいフォント イメージを取得し、TexturePackerを使用して他のスキン アセットと共に再パックする必要があります。

于 2013-08-30T06:09:13.717 に答える
1

現在、Libgdx はスキンを取得するための Git リポジトリを提供しています。https://github.com/libgdx/libgdx-skins からダウンロードできます。アセットをコピーします: https://github.com/libgdx/libgdx-skins/tree/master/プロジェクトへのskins/visui/assets

于 2016-06-21T05:57:41.210 に答える