Unityで文字の表示、文字リソースのロードや処理のまとめです。
文字データの扱い
表示する
テキストの配置
ゲームオブジェクトからTextMeshProをインサート。
ない場合Importerが出るので「Import TMP Essentials」をインポートします。
配置すると大きすぎるので、位置やサイズを調節。
インスペクタから文字を変更・リサイズできます。
中央揃え
タグが利用できます。
<align=center>
スクリプトでテキスト変更
「using TMPro;」を宣言してから利用します。
「SetText」関数でテキストをセットします。
using TMPro;
public class scrTXT : MonoBehaviour
{
void Update()
{
TextMeshProUGUI tmp;
if (Input.GetMouseButtonDown(0)){
tmp= GetComponent<TextMeshProUGUI>();
tmp.SetText("ok");
}
}
}
文字データの処理
データの読み込み
テキストファイルをアセットの「Resources」へ入れます。
TextAsset型として「 Resources.Load 」関数でデータを取得できます。
スクリプトでコンソールへ出して確認します。
void Start()
{
var TextAsset = Resources.Load ("data") as TextAsset;
Debug.Log (TextAsset .text);
}
データの後処理
取得したテキストは、Split関数で区切られた配列に変換することができます。
string[] lines = TextAsset .text.Split(',');
文字の不具合
文字が表示されない?
うちでおきた事例ではCanasの下にText(TMP)をおかないと表示されないことがありました。
文字化け?
日本語に対応していないフォントだと文字化けがおきます。
そこで日本語対応フォントをUnityに埋め込む作業が必要です。まずはフォントはNoto sans japaneseをダウンロードし、Unityのアセットへドラッグします。
Noto Sans Japanese - Google Fonts
Text(TMP)への埋め込みですが、「Window>TextMeshPro>Font Asset Creator」を起動。
NotoSansJでキャラクターセットを作って保存。
文字リストは以下を使わせてもらうと簡単です。入れたらGenerate Font Atlasでコンパイル?します。
日本語文字コード範囲指定(ascii・ひらがな・カタカナ・第一水準および第二水準(JIS-X0208-1997)に含まれる漢字) · GitHub
Text(TMP)のインスペクタで、埋め込んだフォントをFont Assetへ割り当てできます。日本語表示がゲーム画面で確認できればOK。
本ブログのUnity関連記事一覧はこちら。