レイアウターコンパイル時
構文を中心に検査します。また、オブジェクトの名前を調べて、オブジェクト参照が、実際に存在する相手に対して行っているか検査します。
エラー表示の形式
[エラーの発生している行番号] エラー内容
(補足表示は2行目に)
ERROR OBJECT : [部品ID]部品名
[1] ERROR undefined function
var
ERROR OBJECT : [4] 編成配置
ID4の編成配置部品に設定されているスクリプトを修正します。この場合、1行目の記述に間違いがあるので修正します。
※重要:編成に含まれる車両は、編成配置がエラーオブジェクトとして表示されます。編成配置のスクリプトに問題がない場合は、車両のスクリプトをチェックしてください。
コンパイル時のエラーチェックは、構文などの検査が主に行われます。コードの論理的な動きに起因するエラーはチェックされません。コーディングには細心の注意を払ってください。一見動いているように見えて、エラーになっているケースも発生します。
VRM 5/ONLINEのエラーチェック拡張
VRM 5/ONLINEでは、いくつかのエラーチェックが追加されています。VRM4で保存したレイアウトを読み込んだ場合、VRM4と同じエラーチェックを行います。そのレイアウトをVRM 5/ONLINEで保存して、開いた場合はVRM 5/ONLINEのエラーチェックが適用されます。このとき、VRM4では問題ないレイアウトからエラーが検出されることがあります。下記のように修正してください。
//VRM4 :EndFuncで閉じていない場合
BeginFunc AAA
BeginFunc BBB
EndFunc
//VRM ONLINE :EndFuncを追加して、閉じてください。
BeginFunc AAA
EndFunc
BeginFunc BBB
EndFunc
ビュワーのエラーチェック
ビュワー実行に、命令を実行しているオブジェクトの種類、命令のパラメータ、パラメータの範囲などをチェックします。エラーが発見された場合は、当該命令の実行をスキップして次の命令の実行に移ります。DEBUG命令でデバッグモードを有効にすると、エラーの発生した命令がログに表示されます。
代表的なエラー
オブジェクトをNULLで参照しました。:
オブジェクト変数にNULLが設定されている状態でオブジェクトにアクセスするとエラーになります。オブジェクト変数にNULLが設定されている場合は、コードを実行しないように条件判断を追加してください。
パラメータにエラーがあります。:
命令のパラメータにエラーがあります。パラメータの記述を修正してください。
実行できないオブジェクトです:
オブジェクトがサポートしていない命令を実行しています。適切なオブジェクトに命令を移動してください。
エラー発生時の注意事項
エラーが発生すると当該命令の処理が中止され、次の命令に実行が移ります。ifなど条件判断でエラーが発生した場合は、次の命令が実行され条件が成立したことと同じようになります。デバッグモードでエラーの発生箇所を修正してください。
if xxxobj.yyy
endif
このコードは、xxxobjがNULLの場合、エラーになります。次のように、NULLの場合は実行しないように条件判断を追加してください。
if xxxobj
if xxxobj.yyy
endif
endif