連結と開放2
VRM5になってから、連結と開放に関するギミックが改変されていたような気がするので、この話を追試してみました。
結論からすると、ghost氏の示した二つの記述例の両方で、Uncouple命令が無視(開放が起こらない)という結果になりました。前者の例で、開放も起こらなくなってしまっているみたいです。なんだこりゃ。
で、試しにレイアウト以外のオブジェクトを対象にしてみると…
BeginFunc MtdUncouple
VarATS ObjATS
get ObjATS ATSENSOR9
Uncouple 1 ObjATS.pTrnNew
DrawVar ObjATS.pTrnNew
EndFunc
これは上手く行ってしまうんですね。
Uncouple 1 ATSENSOR9.pTrnNew
としても同様に動作しました。
つまり、Uncouple命令の第2引数は、object.variableの形式を受け付けていないわけではありませんね。
やっぱりバグなんですかね?レイアウト内の編成オブジェクト変数を対象にすると失敗するのは。
さて、開放された編成には解放前の編成のスクリプトがコピーされますね。というわけで以下の実験を行ってみましょう。
解放前の編成に、
VarTrain pTrnNew
Var Three
set Three 3
BeginFunc MtdUncouple
DrawMessage "開放します"
Uncouple 1 pTrnNew
EndFunc
こんなスクリプトを書きます。
で、開放する前にレイアウトから
Var EidChk
SetEventKey this MtdChk EidChk a
BeginFunc MtdChk
VarTrain pTrnActive
GetActiveTrain pTrnActive
DrawVar pTrnActive.pTrnNew
DrawVar pTrnActive.Three
EndFunc
こんな感じで編成名をDrawさせると、
[pTrnNew] : (obj.train) null
[Three] : 3
をきちんと表します。解放後の、元の編成(名前が変わっていない方)は
[pTrnNew] : (obj.train) TRAIN8_1
[Three] : 3
を表示します。ここまではOKです。ごく想定の範囲内です。
ところが、解放後に新しく生成された編成(TRAIN8_1)がアクティブなときにMtdChkを実行すると、ログウィンドウには
(obj.train) : null
[(文字化け)] : 3
と表示されました。もちろん、2行目は謎の漢字もしくは記号の羅列になるわけですが。
問題点は二つ。解りやすい方は、変数名"Three"が文字化けして表示されること。まーこれは、大した問題でも無いんじゃないでしょうか。中身の3はただしく参照できてるわけですし。
もう一つは、pTrnNewがあたかも存在しないように見えること。です。これは[大カッコ]により変数名が表示されていないことから、「そう見えて」います。が、本当に存在しないのか、実はどこかに存在しnullが入っているのか、どこかに存在しTRAIN8_1が入っているのかが全く分かりません。これを実際に確かめる方法も思いつきません。
どなたか、何かご存知でしたら教えてください。っつーか、大本営に直接問い合せるべきなんですかね?
| 固定リンク
「日記・コラム・つぶやき」カテゴリの記事
- 顕在化してくれないミドル層VRMユーザー #VRMアンケート2019(2019.12.04)
- 最近のVRMの新製品の動向もまあまあ妥当かも,という件 #VRMアンケート2019(2019.11.17)
- オフ会後1週間。 #VRMOFF2019(2019.11.16)
- #VRMOFF2019 まであと1ヶ月。(2019.10.10)
- 自作車両PJ第2弾 スタート(2019.09.12)
この記事へのコメントは終了しました。
コメント