We will entertain your mind, enhance your brain, expand your lifestyle.

リロードの罠

シーンのアンロードを組み込んで、各パズルシーンを確認している。残念ながらというか、予想通りというか、パズルシーンをアンロード後再度ロードするといろいろ不具合が出てきた。

その主な原因は、スクリプトの static変数。

各パズルは、パズル終了(中断)時に部品の状態(位置やON/OFFなど)を記録しており、パズルが新規にロードされたり、アンロード後のリロード時に部品を元の状態に復帰するよう設計している。部品の初期配置もこの機能を利用しており、うまく動作している。

問題となったのは、各部品にアタッチされているスクリプトの static変数。Unityのスクリプト(クラス)は、アタッチされたオブジェクトのロード時に初期化されると思っていたのだが、正しくは最初のロード時のみで、クラスは永続化される。

このため staticとしているクラス変数が初期化されず、いろいろ不具合を起こしていた。このため内部的に初期化のタイミングを作り、リロード時にも static変数を初期化するよう各パズルを順に修正中。