//引数の文字列を表示する private void write(string aText) { TagReader tReader = new TagReader(aText); while (!tReader.isEnd()) { TagReader.Element tElement = tReader.read(); //1文字 if (tElement is TagReader.OneChar) { addChar(((TagReader.OneChar)tElement).mChar); continue; } //開始タグ if (tElement is TagReader.StartTag) { applyStartTag(((TagReader.StartTag)tElement)); continue; } //終了タグ if (tElement is TagReader.EndTag) { applyEndTag(((TagReader.EndTag)tElement)); continue; } Debug.LogWarning("MyTextBoard : 文字読み込み失敗 次の文字「" + tReader.mNext.ToString() + "」"); } }
/// <summary>末尾に文字追加</summary> public void addLast(string aText) { TagReader tReader = new TagReader(aText); while (!tReader.isEnd()) { TagReader.Element tElement = tReader.read(); //1文字 if (tElement is TagReader.OneChar) { StringElement tStringElement = StringElement.create(((TagReader.OneChar)tElement).mChar, this); addLast(tStringElement); continue; } //開始タグ if (tElement is TagReader.StartTag) { applyStartTag(((TagReader.StartTag)tElement)); continue; } //終了タグ if (tElement is TagReader.EndTag) { applyEndTag(((TagReader.EndTag)tElement)); continue; } Debug.LogWarning("MyTextBoard : 文字読み込み失敗 次の文字「" + tReader.mNext.ToString() + "」"); } _Text += aText; }
//<summary>次の1文字を表示</summary> public void next() { while (true) //1文字表示するまでループ { if (mWritingState != WritingState.writing) { return; //表示停止中 } if (mReader.isEnd()) { //全て表示終了している mWritingState = WritingState.end; //読み終わりコールバック if (mOnRead != null) { mOnRead(); } } //次の1文字もしくはタグを読んで表示 TagReader.Element tElement = mReader.read(); if (tElement is TagReader.OneChar) { //文字1文字 mBoard.addText(((TagReader.OneChar)tElement).mChar); return; } else if (tElement is TagReader.StartTag) { //開始タグ if (!applyStartTag((TagReader.StartTag)tElement)) { mBoard.addText(((TagReader.StartTag)tElement).mOriginalString); } continue; } else if (tElement is TagReader.EndTag) { //終了タグ if (!applyEndTag((TagReader.EndTag)tElement)) { mBoard.addText(((TagReader.EndTag)tElement).mOriginalString); } continue; } } }