フォーラムへの返信
- 投稿者投稿
- 2026年9月14日 11:49 AM #527
Kei
参加者テストしてみたところVer12.5でも同様の現象が発生しました。
テスト結果からの推測にはなりますが、{M:***}のマクロの部分がNodeにパブリッシュされる時点で展開され、喪失してしまっているようです。
Nodeにマクロを含む文字列を伝達するためには、”{ }”を一旦別の文字列としてTextObjectに保持し、
SceneDirector上のマクロで復元する事で回避可能でした。
流れとしては、非表示のTextObjectにJsonの内容を保存し、
データ更新時に表示されているTextObjectへ()→{}の文字列変換を施したものを代入します。以下のようなJSONファイルを用意しました。今回は “{” の代わりに “(” を、”}” の代わりに “)” を使用します。
{ “Text”:”123(M:red)456(M:blue)789″ }手順は以下の通りです。
テキストオブジェクトを2つ準備します。
JSONファイルの内容を読み取る方のオブジェクト(Text1)を非表示にし、更新された際にSceneDirectorが再生されるようにします。
再生されるSceneDirector側には()を{}に変換するスクリプトを記載します。
この時、確実にDatalinqの更新が完了してから変換を行いたいので、先頭フレームにスクリプトを配置しないでください。
変換した文字列は表示用のテキストオブジェクト(Text2)に代入します。
=========TextObjectコピペ用==========
dim dir as xpSceneDirectorScene.GetSceneDirector(0,dir)
dir.Position = 0
dir.Play()============SceneDirectorコピペ用===========
dim tObj as xpTextObject
dim dispObj as xpTextObjectScene.GetObjectByName(“Text1”,tObj)
Scene.GetObjectByName(“Text2”,dispObj)dispObj.Text = tObj.Text.Replace(“(“,”{“).Replace(“)”,”}”)
- 投稿者投稿


