こんそーるすーぷのレシピはこちら

いちおう仕事なのに趣味の人に劣って焦り

【Unity】Sceneを再読み込みでライティングが暗くなってしまった時の対応

Unityで簡単なゲームを作っており、そこで起こったライティングの不具合とその解決法です。
f:id:nanokanato:20171116111703p:plain:w300

発生した不具合

Sceneは以下のようになっており、
「Scene_Static」でカメラとコントローラーなどを管理。
「Scene_Game」でゲームをプレイする画面を表示しています。
f:id:nanokanato:20171116110059p:plain:w300

初回のScene_Gameの表示時は以下のような明るいライティングの画面が表示されます。
f:id:nanokanato:20171116110251p:plain:w300

制限時間のカウントが0になるとリザルト画面に遷移し、タイトルなどを挟んでまたScene_Gameに戻ってきます。
その時、以下のような暗いライティングになってしまいました。
f:id:nanokanato:20171116110620p:plain:w300

ちなみにScene遷移はScene_Staticを残したまま行いたいので「SceneManager.LoadScene(nextSceneName, LoadSceneMode.Additive);」を使っています。

解決方法

Unityに「事前計算されたライティングの利用」という解説があるのでそれを利用します。
docs.unity3d.com

メニューバーの「Window > Lighting > Settings」からObject mapsを開きます。
f:id:nanokanato:20171116112624p:plain:w300

Auto GenerateをOffにしてGenerate Lightingを押すことでライティングを事前に計算することができます。

ひとまず、再度Scene_Gameを読み込んでも明るい状態になりました。
f:id:nanokanato:20171116111805p:plain:w300

その他

一度、Generate Lightingをすると以下のようなライティングのデータが作成されるので再度Auto GenerateをOnにしても暗くなることはありませんでした。
f:id:nanokanato:20171116112952p:plain:w300