Unityにはリッチテキストという機能があります。
文字列にHTML風のタグを入れるとそれを解釈して、表示してくれる機能のことです。
たとえば、
<color=red>赤色になる</color>
というようにすると、
赤色になるというように赤色になって表示されます。
<size=50>大きさを指定した</size>
というようにすると、
大きさを指定したというように50ピクセルで表示されるようになります。
この指定はUIの要素のプロパティで指定した値よりも優先されます。
UI.Textコンポーネントのフォントサイズを80にして、
<size=100>で他の部分より大きくすると初めの文字だけ大きくする表現ができます。
私が失敗したのは、Canvas Scalerの設定で画面の大きさ次第でスケールがかかるようにしていた時のことです。
スマホの解像度はかなり差があるので、画面ごとに合うように縮小・拡大が自動でされるように指定しています。
そのため、画面の解像度が高くなったときにピクセル数の指定が意図どおりにならないことがあるのです。
100ピクセルの大きさで指定しても、解像度がいくつの端末で見るかによってかなり異なります。
1920×1080と960×540の端末で見比べれば、2倍の差があることになります。
基準となる解像度で何ピクセルになるべきかを決め、
現在の解像度に合わせてピクセルを変更すれば良いことになります。
ここでは縦幅を基準にして、横幅の変化は考えないことにします。
1920×1080で100ピクセル分の大きさにしたいのであれば、
“<size=” + (100 * Screen.height / 1920) + “>”
という文字列を作り、
スクリプトから設定するということをすれば、どのような解像度の端末でも同じような見た目になります。
計算で求めて対処できますが、
素直に新しいTextコンポーネントを用意し、そのフォントサイズを変更する方が楽で良いと思います。
<追記>
Unity 5.2ではsizeタグの大きさ指定がピクセル単位ではなくなったようです。挙動をみると、フォントサイズになっているようです。この変更は使いやすく直感的になったので、良いものだと思います。以前からsizeタグを使っていた場合は確認してみてください。
コメント