UnityでXMLファイル内のテキストデータに改行を入れる方法
Unityでアプリを作っていて、ローカライズをしているとxmlファイルに書いたテキストの中に改行を入れたくなるときがあります。
そんなときは

と入れておくと、そこに改行が入ります。
最初、他のプログラミング言語とかでよくやるように\n
でいけるんじゃないかと思ってやってみたら、ダメでした。
例としてはこんな感じ。sample
というテキストデータの中に意図的に

で改行を入れています。
<?xml version = "1.0" encoding = "UTF-8"?>
<Resources>
<string name = "sample" text = "このアプリは不思議なアプリです。
枕元に置いておくと
自分が見たいと思う夢を見ることができます。"/>
</Resources>
このテキストデータをアプリ上で表示させると以下のように改行されて表示されるでしょう。
このアプリは不思議なアプリです。
枕元に置いておくと
自分が見たいと思う夢を見ることができます。
XMLファイルのデータの中では&#
と;
との間に文字コードを指定することで、文字コードを直接書き込み可能です。
今回は改行コードなので、Unicodeで16進表記で改行コードを表現するとxA
になります。
そのため&#
+ xA
+ ;
で改行データとして

を入れれば改行として評価されるようになるわけですね。
英語だと単語と単語の間にスペースが入ります。そうすると、文字列が画面幅に対してはみ出そうなときにUnityは空白を考慮して折り返しをしてくれるのですが日本語だと単語の間に空白が必ず入るとは限りません。
結果、どうなるかというと突き抜けてしまうか文字サイズを縮めて表示するとかになってしまうのですがどちらもあまりよくないことが多いです。
日本語や中国語などのように空白の扱いが厳格ではない言語の場合は意味が通じやすいことに配慮しながら、適宜改行を忍ばせておくのが良さそうだと思いました。
この記事の環境情報
- Unity 2021.3.16f1 Personal
- 今日も小ネタ
Unityに関する他の記事を読む
最近の記事を読む
- Flutterでcontextを使わずにlocale情報を取得する
- Cloud RunでIAPを有効にしようとしてハマったこと
- slimでtype='application/ld+json'のscriptタグを書く
- タグマネージャーでjsのloadイベントを発火させたいとき
- mysqlコマンドを実行してERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)と言われたら