サイトのトップへ戻る

AndEngineドキュメント 日本語訳

スプラッシュスクリーンを作成する:

ゲーム開発での便利な 'パターン'についての記事で述べたように、複数のActivityを使うのではなく複数のSceneを使うほうが良いです。 このチュートリアルでは、スプラッシュスクリーンの作成を制御するスマートな方法を説明します。 これは  thepi 氏が公開したコードを編集したものです。最新バージョンの AndEngine GLES2 向けに調整し、有用なコードをいくつか追加しています。 このチュートリアルのページ下部に、クールなAndEngine マークのスプラッシュスクリーンが実装された、準備済みプロジェクトがあり、ダウンロードできます。



1. どのように動作しますか?
  • 最初にスプラッシュスクリーンの付いたtextureを一つだけ読み込みます。
  • 残りのゲームリソースが読み込まれるまで、スプラッシュスクリーンの sceneを表示します。
  • リソースを読み込んだ後、メインのScene(メニューか何か)を表示します

この簡単なアプローチを使うことで、ゲームリソース読み込み中に見栄えのいいスプラッシュスクリーンを表示でき、黒塗り画面を表示するよりも良くなるでしょう。



2. コードについて一処理ずつ説明します:
  • BaseGameActivityを継承して新規にActivityを作成します。
  • EngineOptionsと cameraを新規に作成します。
  • Scene のフィールドを二つ、 splashScene と mainSceneを作成します。
未実装のメソッドを追加しなければなりません (eclipse のヒントに従ってください)
  • スプラッシュスクリーン用に、新たにtexture とtexture regionを作成しなければなりません。
  • splashという名前でSprite のフィールドを新規に作成します。
private BitmapTextureAtlas splashTextureAtlas;
private ITextureRegion splashTextureRegion;
private Sprite splash;
onCreateResources() 内で、スプラッシュスクリーンの画像とそのテクスチャのみを読み込みます。
BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
splashTextureAtlas = new BitmapTextureAtlas(this.getTextureManager(), 256, 256, TextureOptions.DEFAULT);
splashTextureRegion =BitmapTextureAtlasTextureRegionFactory.createFromAsset(splashTextureAtlas,
this,"splash.png", 0, 0);
splashTextureAtlas.load();
pOnCreateResourcesCallback.onCreateResourcesFinished();
では、スプラッシュスクリーンを初期化しましょう:
private void initSplashScene()
{
    splashScene = new Scene();
    splash = new Sprite(0, 0, splashTextureRegion, mEngine.getVertexBufferObjectManager())
    {
        @Override
        protected void preDraw(GLState pGLState, Camera pCamera)
        {
            super.preDraw(pGLState, pCamera);
            pGLState.enableDither();
        }
    };

    splash.setScale(1.5f);
    splash.setPosition((CAMERA_WIDTH - splash.getWidth()) * 0.5f, (CAMERA_HEIGHT - splash.getHeight()) * 0.5f);
    splashScene.attachChild(splash);
}

何をしているのかと言うと、 splash sceneとsplash Spriteを初期化しています。また、sprite のディザリングを有効にしています (ディザリングを有効にすることによって、スプラッシュスクリーンで使用する画像のギザギザが滑らかに見えます)。 ディザリングについて学ぶにはこのチュートリアルを参照してください。また、splash sceneの中央にsprite を貼り付けています。



以下のコードを onCreateScene()内に記述します。
initSplashScene();
pOnCreateSceneCallback.onCreateSceneFinished(this.splashScene);
以下のコードを onCreateScene()内に記述します。
mEngine.registerUpdateHandler(new TimerHandler(3f, new ITimerCallback() 
{
    public void onTimePassed(final TimerHandler pTimerHandler) 
    {
        mEngine.unregisterUpdateHandler(pTimerHandler);
        loadResources();
        loadScenes();         
        splash.detachSelf();
        mEngine.setScene(mainScene);
    }
}));
 
pOnPopulateSceneCallback.onPopulateSceneFinished();
上記ではどういった処理をしているのでしょうか? ゲームリソースを読み込んだ後、 scene をメインの sceneに変更して splash screen spriteを取り外しています。

また、以下のメソッドを実装します (このメソッドの動作を理解したい場合は、それらのコメントを確認してください)

public void loadResources() 
{
    // Load your game resources here!
}

private void loadScenes()
{
    // load your game here, you scenes
    mainScene = new Scene();
    mainScene.setBackground(new Background(50, 50, 50));
}


これで完了です。実行する前に、assets/gfx フォルダにスプラッシュスクリーンの画像を追加するのを忘れないでください! ページ下部では、以下の画面が表示される作成済みプロジェクトのテンプレートをダウンロードできます。

コードのテンプレートにはいくつか追加がされています (終了処理やスプラッシュスクリーンが表示されている間はゲームの終了を防止する処理など)。 スクロールダウンして プロジェクトをダウンロードしてください。

Picture

ソースコードをダウンロードする:

splashscreentemplate.rar
File Size: 70 kb
File Type: rar
Download File




エンジェル戦記