テキスト
YauiText はテキストを描画する要素です。UI Toolkit のテキストエンジンである Unity の Advanced Text Generator (ATG) を使い、次の機能を提供します。
- シェーピング (アラビア文字やデーヴァナーガリーなどの文字体系のため)
- フォントにない文字の OS フォントへのフォールバック
- 言語ごとの改行規則 (CJK の禁則処理を含む)
- リッチテキストのタグ
グリフは Uber シェーダーによって、動的なフォントアトラスから SDF (符号付き距離場) として、ボックスや画像と同じドローコールで描画されます。
プロパティ
| プロパティ | 説明 |
|---|---|
Text | テキスト |
Font | フォント (UnityEngine.Font)。未設定なら組み込みのフォント。 |
FontSize | キャンバス単位でのサイズ |
Color | 既定の色。リッチテキストのタグで上書きできます。 |
Align | Left、Center、Right、Justified |
VerticalAlign | 要素のボックス内での Top、Middle、Bottom |
WordWrap | ボックスの幅で行を折り返すかどうか |
Overflow | Visible、またははみ出したところでテキストを切り「…」で終える Ellipsis |
RichText | リッチテキストのタグを解釈するかどうか |
SpriteAsset | <sprite> タグのための TextCore のスプライトアセット |
OutlineWidth, OutlineColor | グリフの周りのアウトライン |
ShadowColor, ShadowOffset, ShadowBlur | グリフ (とそのアウトライン) の下の影。オフセットもぼかしもなければ影はありません。 |
アウトラインの幅と影のぼかしは、フォントアトラスの距離場によって制限されます。動的フォントではフォントサイズの約 10 分の 1 です。
サイズ
Width または Height が Auto のとき、テキストの要素はレイアウトによって計測されます。WordWrap が有効なら、テキストはレイアウトが与えた幅で折り返されます。
YauiText は子の要素をレイアウトしません。子は無視されます。
Overflow = Ellipsis では、テキストは幅 (折り返しなしの場合) または高さ (折り返しありの場合) からはみ出したところで切られます。
生成
テキストのプロパティの変更は、変更した時点では安価です。テキストは変更済みとしてマークされるだけです。変更されたテキストは、PreLateUpdate の開始時にワーカースレッド上のジョブとしてまとめて生成され、描画の直前に回収されます。スクリプティングを参照してください。
テキスト生成は YAUI で最もコストの高い処理です。値を設定する前に比較するなどして、変わっていないテキストを変更しないようにしてください。YauiText.Text は、新しい文字列が同じ場合には何もしません。
ATG は内部 API を通して呼び出されます。内部 API はリフレクションで取得し、起動時に検証します。使用中の Unity のバージョンと一致しない場合、テキストは代わりにメインスレッド上で公開 API の TextGenerator によって生成されます。動作はしますが、低速になります。
リッチテキストとスプライト
RichText を有効にすると、ATG がサポートするタグ (例: <b>、<i>、<color>、<size>、<sprite>) を使えます。
<sprite> を使うには、SpriteAsset に TextCore のスプライトアセット (UnityEngine.TextCore.Text.SpriteAsset) を設定してください。