1: 2015-05-26 (火) 14:15:13 njf[5] [6] [7] | 現: 2015-05-29 (金) 19:09:16 njf[5] [8] [9] | ||
---|---|---|---|
Line 6: | Line 6: | ||
難点は | 難点は | ||
- | -文字種が多いと現実的では無い | + | -文字種が多いとファイルサイズが大きくなりすぎて運用が現実的では無い |
-作って管理するのはそれなりに手間 | -作って管理するのはそれなりに手間 | ||
Line 21: | Line 21: | ||
[Embed(source="font.fnt", mimeType="application/octet-stream")] | [Embed(source="font.fnt", mimeType="application/octet-stream")] | ||
public static const FontXml:Class; | public static const FontXml:Class; | ||
+ | |||
[Embed(source = "font.png")] | [Embed(source = "font.png")] | ||
public static const FontTexture:Class; | public static const FontTexture:Class; | ||
+ | |||
var texture:Texture = Texture.fromEmbeddedAsset(FontTexture); | var texture:Texture = Texture.fromEmbeddedAsset(FontTexture); | ||
var xml:XML = XML(new FontXml()); | var xml:XML = XML(new FontXml()); | ||
Line 42: | Line 42: | ||
しかし、''この時はフォント名はxml内の「face」の値では無く、ファイル名(ここでは「font」)になることに注意が必要。'' | しかし、''この時はフォント名はxml内の「face」の値では無く、ファイル名(ここでは「font」)になることに注意が必要。'' | ||
- | これでも使えるのだが、実際のゲーム開発では負荷を減らすためにドローコールを減らしたいが上のやり方ではビットマップフォントが他のテクスチャと別になってしまうのでその役には立たない。 | + | これでも使えるのだが、実際のゲーム開発では負荷を減らすためにドローコールを減らしたいが上のやり方ではビットマップフォントが別のテクスチャになってしまうのでその役には立たない。 |
それを実現するにはまず、ビットマップフォントを作成したら、そのテクスチャを他のテクスチャと統合し、あとでプログラム的にサブテクスチャを取り出せば良い。 | それを実現するにはまず、ビットマップフォントを作成したら、そのテクスチャを他のテクスチャと統合し、あとでプログラム的にサブテクスチャを取り出せば良い。 | ||
Line 55: | Line 55: | ||
ここでビットマップフォント以外も含まれているテクスチャアトラスの中から、ビットマップフォント部分をgetTextureで取り出している。 | ここでビットマップフォント以外も含まれているテクスチャアトラスの中から、ビットマップフォント部分をgetTextureで取り出している。 | ||
- | ゲームにもよるが、ゲーム画面ではスコアや残り時間表示などテキストを使う事が多いので、これでかなりドローコールが減らせる。 | + | あとは、BitmapFont.createSpriteを使うとドローコールが減ると以下のページにあるのだが、やってみるとさほど減らない。謎。 |
+ | |||
+ | http://forum.starling-framework.org/topic/performance-bitmap-fonts-draw-count | ||
+ | |||
+ | 数文字程度の場合、batchableをtrueにしておくとドローコールが減らせる。しかし、文字が多いとドローコールを減らすための処理が減らしたことによる負荷軽減を上回るそうなので、十数文字以下での利用が推奨されている。BitmapFontのみの機能で通常のフォントによるTextFieldでは意味が無い。 | ||
+ | |||
+ | textField.batchable = true; |
(This host) = https://njf.jp