シーンのアンロードを組み込んで、各パズルシーンを確認している。残念ながらというか、予想通りというか、パズルシーンをアンロード後再度ロードするといろいろ不具合が出てきた。
その主な原因は、スクリプトの static変数。
各パズルは、パズル終了(中断)時に部品の状態(位置やON/OFFなど)を記録しており、パズルが新規にロードされたり、アンロード後のリロード時に部品を元の状態に復帰するよう設計している。部品の初期配置もこの機能を利用しており、うまく動作している。
問題となったのは、各部品にアタッチされているスクリプトの static変数。Unityのスクリプト(クラス)は、アタッチされたオブジェクトのロード時に初期化されると思っていたのだが、正しくは最初のロード時のみで、クラスは永続化される。
このため staticとしているクラス変数が初期化されず、いろいろ不具合を起こしていた。このため内部的に初期化のタイミングを作り、リロード時にも static変数を初期化するよう各パズルを順に修正中。