chara_hideは要注意!バグ出やすい
[chara_hide]でゲームがフリーズすることがあります。
原因は、[chara_show]で表示していないキャラを、[chara_hide]で消そうとしたとき。
一見当たり前のように見えますが、これはとてもめんどくさい仕様です。
一本道のゲームならさほど問題ではないですが、いろんなルートを行き来したり、ループしたりする構造のシナリオでは、[chara_show]と[chara_hide]の対応関係がずれる、ということがよくあるからです。
例えばこんな分岐
1)キャラが3人いる場面。分岐で2)もしくは1-2)へ進む
2)キャラ3人を消去。場面転換。
1-2)キャラを1人消去(キャラが計2人になる)その後、2)へジャンプ
1)~2)の順でシナリオが進む分には問題ないですが、1)の後に分岐で1-2)に進み、それから2)に進むとフリーズします。
一本道のゲームにしても、シナリオを直しているうちにこのずれは発生しがちです。
表示していないキャラを[chara_hide]で消そうとしたときには、フリーズが発生してしまいます。なので、
・[chara_show]と[chara_hide]の対応関係はきっちりやっておきましょう。
・謎のフリーズがあったら、[chara_hide]を疑いましょう。
ちなみに、[freeimage]を使用すると、[chara_show]で表示したキャラを全部消せます。
ところが、これをやると[chara_show]のスタック的なものが内部的に残っているのか、その後に[chara_show]と[chara_hide]を繰り返しているうちに、やはりフリーズしてしまいます。
(時間差で来るので原因究明がホントにめんどくさいフリーズです)
・キャラ一括消去をしたい時は[freeimage]ではなく、[chara_hide_all]を使いましょう。
・追記:[chara_hide_all]を使うときにはwait=trueにすること!
wait=falseにすると、直後に[chara_show]を置いたときに、[chara_hide_all]の処理に巻き込まれて、キャラが表示されないというバグが発生します。
なお、このブログのすべての記事はティラノスクリプトver472での話です。