[UNITY]2DRPG開発日誌 #75 \nが改行になってくれない問題

とっても難しい円記号問題

はじめに、円記号とバックスラッシュの問題についてはWikipediaをご覧ください

またはこの記事もわかりやすいです。

で、UNITYでスクリプトからstringの改行をする場合は「/n(バックスラッシュとn)」と打ちますが、例えばローカルファイルからUNITYへ文字データを渡すようなことをすると、なぜかバックスラッシュが円記号に変換されてしまい、

一行目
二行目

と打ったつもりでも、

一行目\n二行目

と表示されてしまうことがあります。

これを解決するためには、stringを呼ぶ際にこのような文字列置換を噛ませることで、間違いなく「\n」を「改行」にすることができます。

if (string.Contains("\\n")) 
   string = string.Replace("\\n", Environment.NewLine); 
else if (string.Contains("\\n")) 
   string = string.Replace("\\n", Environment.NewLine);

if と else if で同じことを書いているように見えますか? 私は一つ目の if を円記号、else if をバックスラッシュで検索するようなコードを書いているつもりですが、記事ではどちらも同じように見えているだけです。いや、いずれか一つだけでいいのかもしれません。もう何もわかりません。早く寝たいです。

円記号問題って難しいですね。私は全く理解できてないです。動けばいいのです。