フワフワソが「ソラとピヨちゃん」や「宮本県」を作るブログ(フワフワソ・ラウンジnew!)

ラノベとテクノを愛するふわふわがノベルゲームを作っています。あと日常のことやイベントの告知なども。スクリプト関連の記事は自分用の備忘録です

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での話です。