7080 + 1

ゲームプログラミングの記事を書いてます。

【Unity】ビットマップフォントをUnityで扱う その2【ShoeBox】

前回の続きです。ブログの更新頻度が爆上がりしてます(前年比)
7081.hatenablog.com

ここからはUnity上での作業...といいたいんですが、実は吐き出したxmlファイルをそのまま使おうとするとエラーが出ます。
ので、先にxmlファイルを編集します。

<font>
	<info face="D:\Desktop
umberfont-export" size="35" />
	<common lineHeight="35" scaleW="137" scaleH="141" pages="1" />
	<pages>
		<page id="0" file="D:\Desktop
umberfont-export.png" />
	</pages>
	<chars count="12">
		<char id="53" x="105" y="53" width="29" height="50" xoffset="0" yoffset="-10" xadvance="33" /><!-- 5 -->
		<char id="54" x="37" y="46" width="34" height="50" xoffset="0" yoffset="-15" xadvance="38" /><!-- 6 -->
		<char id="55" x="72" y="91" width="31" height="44" xoffset="0" yoffset="-10" xadvance="35" /><!-- 7 -->
		<char id="56" x="72" y="45" width="32" height="45" xoffset="0" yoffset="-10" xadvance="36" /><!-- 8 -->
		<char id="57" x="0" y="46" width="36" height="49" xoffset="0" yoffset="-10" xadvance="40" /><!-- 9 -->
		<char id="48" x="0" y="0" width="45" height="45" xoffset="0" yoffset="-9" xadvance="49" /><!-- 0 -->
		<char id="49" x="80" y="0" width="17" height="44" xoffset="0" yoffset="-9" xadvance="21" /><!-- 1 -->
		<char id="50" x="46" y="0" width="33" height="44" xoffset="0" yoffset="-9" xadvance="37" /><!-- 2 -->
		<char id="51" x="105" y="0" width="31" height="52" xoffset="0" yoffset="-9" xadvance="35" /><!-- 3 -->
		<char id="52" x="0" y="96" width="36" height="44" xoffset="0" yoffset="-9" xadvance="40" /><!-- 4 -->
		<char id="32" x="0" y="0" width="0" height="0" xoffset="0" yoffset="0" xadvance="22" /><!--   -->
		<char id="9" x="0" y="0" width="0" height="0" xoffset="0" yoffset="0" xadvance="176" /><!-- 	 -->
	</chars>
	<kernings count="0">
	</kernings>
</font>

xmlファイルの中身です。参照するpngファイルのパスが明らかにおかしいですね。2箇所おかしいです。

D:\Desktop
umberfont-export

謎の場所に改行が入っています。(今回の画像はデスクトップに保存していました)
ShoeBoxで出力する際、ファイル名は設定をいじっていなければ「numberfont-export」になります。で、一番最後の\が何故かメタ文字扱いになってしまい、\nになって改行コードになってしまうみたいです。この辺ぶっちゃけよくわかりません。
とりあえず2箇所おかしくなっているので、正しいファイルパスに書き換えてください。

ここからはUnityでの作業です。ShoeBox Tools for Unityをインポートしてからの作業になります。

Asset->ShowBox Tools->Import Bitmap Fontを選択、xmlを選んでください。
エラーとかが出なければ、Asset直下にfontsettingsとマテリアルが出来ます。

あとはuGUIのTextのFontのところに出来たfontsettingsを突っ込めばOKです。
こんな感じになるはずです。
f:id:atori708:20171203021940g:plain
GIFのレコーダーのせいか画像汚いですが、Unity上ではきれいに出てます。

補足

このままだと改行がうまく効かないと思います。fontsettingsのLineSpacingをいい感じの数値にしてください。今回の画像の場合は50くらいがいいかと思います。
あと一行目からなんか文字が出る高さがおかしくなることがあります。これはfontsettingsのCharacterRecsts配列のVertのyで変わってきます。ここはShoeBoxのTxt Line Heightが影響してくるようです。ShowBoxで出力する際の文字出力イメージを見ながらいい感じに調整してください。今回の画像の場合、Txt Line Heightを35くらいにしました。
fontsettingsの値の詳細は面倒くさいのでに他に譲ります。

今回はこれで以上です。不明点や指摘などありましたらコメントでお願いします。