2016-06-16 2 views
1

libgdxを使用して、私は2Dゲームを作成しています。すべてのテクスチャを配列にロードしたい。だから私はそれらのためのクラスを作成しました。私はrender()内のループ画像アレイをしたいと思います:libgdxはテクスチャを配列にロードできません

public class LoadingImages { 
    public Texture[] images; 

    public area1() { 
     images[0] = new Texture(Gdx.files.internal("img/image1.jpg")); 
    } 
} 

私はそれを実行しようとすると、これは私とエラーを与える:

Exception in thread "LWJGL Application" java.lang.NullPointerException 
      at com.mygame.game.LoadingImages.loading(LoadingImages.java:31) 

画像の数は、面積に応じて可変になります。

+0

してください、あなたがスレッドで –

+0

例外com.mygame.game.LoadingImages.loadingで「LWJGLアプリケーション」java.lang.NullPointerExceptionが \t(LoadingImages.java:31) 31は、行番号で得たエラーを提供images [0] =新しいテクスチャ(Gdx.files.internal( "img/image1.jpg")); – Mateus

+0

ありがとうございました。あなたの質問を更新してください。 –

答えて

2

What is a NullPointerException, and how do I fix it?も参照してください。

まだ割り当てられていない変数:images[0]にアクセスしようとしています。配列の最初の要素を使用する前に、少なくともサイズ1の配列を作成する必要があります。したがって、次のように変更してください:

public *void* area1() { 
    images = new Texture[1]; 
    images[0] = new Texture(Gdx.files.internal("img/image1.jpg")); 
} 

あなたの例外はあなたのコードと一致しません。また、多くのテクスチャを使用すると、バッチをフラッシュすることを意味するため、パフォーマンスにすぐに影響します。画像を1つのテクスチャにまとめる方がよいでしょう。インデックスで画像にアクセスしたい場合は、それでも可能です。 See this

また、AssetManagerは、すべてのアセットを手動で読み込むよりもはるかに便利です。 See this

+0

私のゲームはすべて2次元画像で、領域1は1つの背景画像といくつかのspryteアニメーションを持っています。領域1から領域2に背景の変更がありますが、いくつかのスプライトアニメーションは同じで、他のものは新しく、最良のアプローチは何ですか?今、私は背景を単一のイメージとして読み込み、スプライトアニメーションをアトラステクスチャとしてロードします。アニメーション化されたオブジェクトごとに – Mateus

関連する問題