Kei

フォーラムへの返信

1件の投稿を表示中 - 1 - 1件目 (全1件中)
  • 投稿者
    投稿
  • #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 xpSceneDirector

    Scene.GetSceneDirector(0,dir)

    dir.Position = 0
    dir.Play()

    ============SceneDirectorコピペ用===========
    dim tObj as xpTextObject
    dim dispObj as xpTextObject

    Scene.GetObjectByName(“Text1”,tObj)
    Scene.GetObjectByName(“Text2”,dispObj)

    dispObj.Text = tObj.Text.Replace(“(“,”{“).Replace(“)”,”}”)

1件の投稿を表示中 - 1 - 1件目 (全1件中)