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

そんなときは
と入れておくと、そこに改行が入ります。

最初、他のプログラミング言語とかでよくやるように\nでいけるんじゃないかと思ってやってみたら、ダメでした。

例としてはこんな感じ。sampleというテキストデータの中に意図的に
で改行を入れています。

<?xml version = "1.0" encoding = "UTF-8"?>
<Resources>
	<string name = "sample" text = "このアプリは不思議なアプリです。&#xA;枕元に置いておくと&#xA;自分が見たいと思う夢を見ることができます。"/>
</Resources>

このテキストデータをアプリ上で表示させると以下のように改行されて表示されるでしょう。

このアプリは不思議なアプリです。
枕元に置いておくと
自分が見たいと思う夢を見ることができます。

XMLファイルのデータの中では&#;との間に文字コードを指定することで、文字コードを直接書き込み可能です。

今回は改行コードなので、Unicodeで16進表記で改行コードを表現するとxAになります。

そのため&# + xA + ;で改行データとして&#xA;を入れれば改行として評価されるようになるわけですね。

英語だと単語と単語の間にスペースが入ります。そうすると、文字列が画面幅に対してはみ出そうなときにUnityは空白を考慮して折り返しをしてくれるのですが日本語だと単語の間に空白が必ず入るとは限りません。

結果、どうなるかというと突き抜けてしまうか文字サイズを縮めて表示するとかになってしまうのですがどちらもあまりよくないことが多いです。

日本語や中国語などのように空白の扱いが厳格ではない言語の場合は意味が通じやすいことに配慮しながら、適宜改行を忍ばせておくのが良さそうだと思いました。

この記事の環境情報

  • Unity 2021.3.16f1 Personal
  • 今日も小ネタ