AndEngineで日本語のテキスト表示 [Androidの開発]
ゲームといえば、スクリプトを読んで、テキストやイベントの選択肢を表示・・・。
私の年齢だと、スーパーファミコンやPC-98の頃から、何度となく同じような処理を作ってます。
若手の頃、今と比べて非常に処理スピードが遅かったもので、
先輩たちのプログラムを見てここまでやらないとレスポンスが遅いとユーザーに感じさせるのか?
とか、思ったもんですが(*‘∀‘)
今や便利なゲームエンジンもありますし、JAVAで組めるようにもなってますしね。
私のAndroidのゲームって、ゲームエンジンとして有名なAndEngineを使って作っているんですが、
効果付きと普通の日本語表示部分のソースを記事にします。
// 端末に搭載されたフォントを利用してテキストを表示
// フォント用のTextureを用意
Texture texture = new BitmapTextureAtlas(getBaseActivity().getTextureManager(),
512, 512,
TextureOptions.BILINEAR_PREMULTIPLYALPHA);
// フォントをイニシャライズ
Font font = new Font(getBaseActivity().getFontManager(), texture,
Typeface.DEFAULT_BOLD, 22, true, Color.WHITE);
// EngineのTextureManagerにフォントTextureを読み込み
getBaseActivity().getTextureManager().loadTexture(texture);
// FontManagerにフォントを読み込み
getBaseActivity().getFontManager().loadFont(font);
//文字効果付メッセージ表示
messageText = new TickerText(32, 32, font, Script[ScriptCnt]/*表示するテキスト*/,
new TickerTextOptions(AutoWrap.WORDS,400,
HorizontalAlign.LEFT,Text.LEADING_DEFAULT,10),
getBaseActivity().getVertexBufferObjectManager());
messageText.registerEntityModifier(
new AlphaModifier(10, 0.0f, 1f)
);
messageText.setBlendFunction(GLES20.GL_SRC_ALPHA,
GLES20.GL_ONE_MINUS_SRC_ALPHA);
attachChild(messageText);
//テキスト表示
menuText1 = new Text(32, 400, font, Script[ScriptCnt]/*表示するテキスト*/,, 1000,
new TextOptions(AutoWrap.WORDS, 400, HorizontalAlign.LEFT, Text.LEADING_DEFAULT), getBaseActivity()
.getVertexBufferObjectManager());
attachChild(menuText1);
AndEngineだと、文字の効果なんて、時間と設定をすれば、勝手にやってくれます。
徐々に鮮明になるメッセージとか、拡大や回転とかもあるんで、色々と便利です。
・・・20年以上前のあの頃、これだけの事をやるのに、何日かかったことか?
そういう要らない苦労をしなくて良い若者がうらやましい。
私の年齢だと、スーパーファミコンやPC-98の頃から、何度となく同じような処理を作ってます。
若手の頃、今と比べて非常に処理スピードが遅かったもので、
先輩たちのプログラムを見てここまでやらないとレスポンスが遅いとユーザーに感じさせるのか?
とか、思ったもんですが(*‘∀‘)
今や便利なゲームエンジンもありますし、JAVAで組めるようにもなってますしね。
私のAndroidのゲームって、ゲームエンジンとして有名なAndEngineを使って作っているんですが、
効果付きと普通の日本語表示部分のソースを記事にします。
// 端末に搭載されたフォントを利用してテキストを表示
// フォント用のTextureを用意
Texture texture = new BitmapTextureAtlas(getBaseActivity().getTextureManager(),
512, 512,
TextureOptions.BILINEAR_PREMULTIPLYALPHA);
// フォントをイニシャライズ
Font font = new Font(getBaseActivity().getFontManager(), texture,
Typeface.DEFAULT_BOLD, 22, true, Color.WHITE);
// EngineのTextureManagerにフォントTextureを読み込み
getBaseActivity().getTextureManager().loadTexture(texture);
// FontManagerにフォントを読み込み
getBaseActivity().getFontManager().loadFont(font);
//文字効果付メッセージ表示
messageText = new TickerText(32, 32, font, Script[ScriptCnt]/*表示するテキスト*/,
new TickerTextOptions(AutoWrap.WORDS,400,
HorizontalAlign.LEFT,Text.LEADING_DEFAULT,10),
getBaseActivity().getVertexBufferObjectManager());
messageText.registerEntityModifier(
new AlphaModifier(10, 0.0f, 1f)
);
messageText.setBlendFunction(GLES20.GL_SRC_ALPHA,
GLES20.GL_ONE_MINUS_SRC_ALPHA);
attachChild(messageText);
//テキスト表示
menuText1 = new Text(32, 400, font, Script[ScriptCnt]/*表示するテキスト*/,, 1000,
new TextOptions(AutoWrap.WORDS, 400, HorizontalAlign.LEFT, Text.LEADING_DEFAULT), getBaseActivity()
.getVertexBufferObjectManager());
attachChild(menuText1);
AndEngineだと、文字の効果なんて、時間と設定をすれば、勝手にやってくれます。
徐々に鮮明になるメッセージとか、拡大や回転とかもあるんで、色々と便利です。
・・・20年以上前のあの頃、これだけの事をやるのに、何日かかったことか?
そういう要らない苦労をしなくて良い若者がうらやましい。
コメント 0