Please Check for errors in rich text tags. というエラーについて

55 views
Skip to first unread message

ishi

unread,
Apr 29, 2025, 12:08:45 PM4/29/25
to 宴ユーザーグループ
Please Check for errors in rich text tags. The number of characters 13 in the text analysis result and the number of characters 53 displayed in TextMeshPro are different.
<param=sys_getItem>アイテムXを<param=sys_ItemCount>0個入手した。

というエラーが出てしまいます。
ラベル自体は読み込めているようですが、先頭の<がテキストとして表示されたあとにエラーでゲームが止まってしまいます。

シナリオファイルの記述は以下です。

<param=sys_getItem>を<param=sys_ItemCount>個入手した。


なお、テキスト内に変数を含まない他のラベルは読み込めます。

以前テストした時は問題がなかったので、私が宴オブジェクトに変更を加えたことが原因だと思われるのですが、どう対処したらいいのか困っております。

・なぜこのエラーが出てしまうのか
・対処の方法

何かアドバイスを頂けますと幸いに存じます。


unity 6000.0.37f1
宴 4.1.8 プログラム経験:初中級者


マッドネスラボ

unread,
Apr 29, 2025, 11:38:45 PM4/29/25
to 宴ユーザーグループ
エラーとしては、ノベル用のテキスト表示コンポーネントであるTextMeshProNovelTextのエラーです。

・なぜこのエラーが出てしまうのか
TextMeshProが表示しているテキストと、ノベル用に解析したテキストの文字数が一致しない場合に発生します。

・対処の方法
TextMeshProNovelTextを介さずに、直接TextMeshPro.textにテキストを設定すると、このようなエラーが出ることがありますので、
TextMeshProNovelTextを使っているテキストに、プログラムからテキストを設定する場合は
TextMeshProNovelTextのSetTextメソッドを使ってください。


2025年4月30日水曜日 1:08:45 UTC+9 ishi:

マッドネスラボ

unread,
Apr 30, 2025, 1:41:03 AM4/30/25
to 宴ユーザーグループ
Text Animator for Unity用の拡張プラグインを使っている場合は、
Vesion2.3以前はこのエラーがでることがあるので、最新バージョン(2.4)にアップデートしてください。


2025年4月30日水曜日 12:38:45 UTC+9 マッドネスラボ:

u ishi

unread,
Apr 30, 2025, 3:02:52 AM4/30/25
to 宴ユーザーグループ
ご返信ありがとうございます!

>TextMeshProNovelTextを介さずに、直接TextMeshPro.textにテキストを設定すると、このようなエラーが出ることがあります

直接TextMeshPro.textにテキストを設定というと、
UIの調整をするためにインスペクターから例文の変更を行いましたが、それが問題なのでしょうか?
自作スクリプトのほうで言えば、宴のTextMeshProに直接触れることはまずなく、マニュアルを参考に advEngine.JumpScenario(label) でロードするのみです。

再三のお願いになってしまって申し訳ないのですが、再度ご解説いただくことは可能でしょうか。

また、Text Animator for Unityは使用していません。

2025年4月30日水曜日 14:41:03 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Apr 30, 2025, 6:45:27 AM4/30/25
to 宴ユーザーグループ
インスペクターで設定してるテキストを変更しても特に問題はないはずです。
(宴の初期化処理等で初期設定されているテキストはクリアされるので)
ただ、クリア処理が呼ばれる前に表示更新処理が来た場合はエラーが出る可能性もあるので、
インスペクターで設定してるテキストを変更をいったん全て削除して、エラーがでるかみてみてください。
(エラーが出なくなったとしたら、初期化が呼ばれる前に表示処理になってしまっています)

エラーが起きる原因の詳細を説明しますと、
宴のテキスト表示は、TextMeshProにテキスト情報を渡すときに色々な加工を行っていて、次のような流れで処理します。
  1. TextMeshProNovelTextから一度TextMeshProにテキスト情報を渡す
  2. TextMeshProからそのテキストを表示した場合の各文字の情報を取得する
  3. それをもとに、さらに加工をした上での最終的なテキスト情報を渡す
2で必要なTextMeshProの内部情報は、生成されるのが即時ではなくTextMeshProの内部で特定のタイミングで行っているため、
取得可能なタイミングを待ってから2が行われます。
不安定になっている原因は、この「TextMeshProの内部のタイミング」が制御しづらいためで、
2が呼ばれるのがTextMeshProの内部処理が終わる前だった場合、エラーになります。
一応保険をかけて、色々なタイミングでも問題ないようにしているつもりではあるのですが、
なんらかの原因でタイミングがかみ合っていないのかもしれません。

エラーは出るものの、特に表示に問題ないのであれば、「Debug Log Error」のチェックを外すと、エラーチェックをしなくなります。
ss_0888.png

TexMeshProの更新タイミングとかみ合ないと起きるかもしれないバグなのですが、
 advEngine.JumpScenario(label) を呼び出すタイミングが、LateUpdateや非同期Task(AwaitableやUniTask)などの通常よりも遅いものである場合は、タイミングがずれてしまうのかもしれません。
なので、エラーのでるオブジェクト(メッセージウィンドウなのか選択肢やバックログなのか)や、エラー時のスタックトレースの情報をいただければ、もう少し詳しく調査ができるかもしれません。

問題が解決しないようであれば、こちらで調査いたします。
お手数をお掛け致しますが、可能であれば下記の手順で問題を再現可能なプロジェクトを送信してください。



2025年4月30日水曜日 16:02:52 UTC+9 u ishi:

マッドネスラボ

unread,
Apr 30, 2025, 6:47:45 AM4/30/25
to 宴ユーザーグループ
すみません。誤記の訂正です。

誤 インスペクターで設定してるテキストを変更をいったん全て削除して、エラーがでるかみてみてください。
正 インスペクターで設定してるテキストをいったん全て削除して、エラーがでるかみてみてください。


2025年4月30日水曜日 19:45:27 UTC+9 マッドネスラボ:

u ishi

unread,
May 2, 2025, 5:55:03 AM5/2/25
to 宴ユーザーグループ
ご返信ありがとうございます!

再度自身のプロジェクトを見直してみました。
シーン上に同一のadv engineのプレファブが複数あったのが原因のようでした。

私はadv engineをプレファブ化し、ゲーム開始にインスタンス化する方法を取っています。
確認用にシーン上にもプレファブを置いたままにしていたせいで、競合していたのかもしれません。
その状態でも変数を含むラベル以外は表示できていました。
文字の加工が多い分、タイミングがずれやすいのかな?と勝手に想像しました。

問題のある部分だけを切り抜いてデータ化するのは自分には難しいので、このスレッドはここで終わりとさせていただきます。
引き続きこちらのアセットにはお世話になっていきたいと思っております。
この度はご丁寧なご回答をいただき、誠にありがとうございました!

2025年4月30日水曜日 19:47:45 UTC+9 マッドネスラボ:
Reply all
Reply to author
Forward
0 new messages