ノベルゲームみたいに、テキストを一文字ずつ表示する関数を作っていて、 string型
の変数を使ってToCharArray()
で1文字ずつにバラして、・・・と書いていたのですが、改行のエスケープシーケンス(今回は¥n
)の扱いがわけわかめだったので、ちょっとだけ¥n
君について調べました。
初心者の書いた拙い文ですが、読んでもらえるとうれしいです。
#調査方法
・適当なスクリプトを書いてDebug.Log()
で出力させます。
#知りたかった事
・¥n
は何文字?
・ Char型
に入れるとどう格納されるの?
・¥nという文字列で出力されたりしない?
(= "¥" + "n"
とみなされたりしない?)
#結果
今回使用したスクリプト↓
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TextAnimate : MonoBehaviour
{
private string str;
void Start()
{
//エスケープシーケンスがどう出力されるか見たかっただけ
Debug.Log("aaa¥nbbb");
//こっちの変数を使って調べる
string originstr = "aaa¥nbbbbb";
//文字列の長さを調べる
Debug.Log(str.Length);
//originstrの中身を、一文字ずつ配列に入れる
char chars[] =originstr.ToCharArray();
//1文字追加するたびに現在の文字列を出力する
for (int i = 0; i < 8; i++)
{
str += chars[i].ToString();
Debug.Log(str);
}
}
}
実行結果(の写し)
(本当はスクショ貼りたかった)↓
aaa
bbb
↓
9
↓
a
↓
aa
↓
aaa
↓
aaa
↓
aaa
b
↓
aaa
bb
↓
aaa
bbb
↓
aaa
bbbb
どうやらoriginstrの最後の文字のbは出力されてないみたいですね。
#わかったこと・考察
・¥n
はこのひと塊で一文字分として数えられる。
・だから、¥n
はChar型
に入れるということを確信してもいいのではないか。
・¥n
を代入加算すると、ふつうに改行してくれる。
・余計な機能書く必要なさそうだ!やったぜ!!!(個人の話)
#最後に
二文字で一文字としてみなされるって不思議ですね。なにはともあれ、これで私は安心して制作に戻れそうです(・∀・)ヤッタゼ