この記事でのバージョン
Unity 5.6.1f1
はじめに
以前に自動でシーンを追加する方法を紹介したのですが、
これとUnity5.6から追加されたIPreprocessBuildを併用すれば、
ビルド直前にシーンを自動で設定出来るのでは?と、そんな事を思い付きました。
Implement this interface to receive a callback before the build is started.
(このインターフェイスを実装して、ビルドを開始する前にコールバックを受け取ります。)
これができれば、設定されているSymbolによって読み込むシーンを変えられるので、
結構便利では?という事で、実際にやってみました!
ScenesInBuildUpdater
まぁ、結論から言うとダメだったんですが、一応、以下がその時のプログラムです。
これはAssets/Scenes/Buildに入っているシーンだけを自動で設定、かつ
DEBUG_BUILDというSymbolが有効な時には
Assets/Scenes/DebugBuildに入っているシーンも自動で設定するというものです。
これを使うと確かにビルド時にシーン自体は変わっているんですが、
残念ながら、その時のビルドには反映されません。
という事で敢え無く失敗したので、代替案を考えてみました。
代替案
ビルド直前にシーンを自動で設定できないのなら、常に自動で設定すれば良いじゃない
てな訳で、シーンが入っているディレクトリの他にProjectSettingsの変更も監視するようにしました。
これを行う事で、Symbolが変更された時も自動でシーンの設定がされますし、
シーンの設定が変更された時も、強制的にシーンの設定を戻します。
つまり、一切手動でシーンの設定は出来なくなり、ミスもなくなるという事です。
おわりに
今回はビルド直前にシーンを自動で設定することは出来ないという形になりましたが、
Resourcesにあるファイルをビルド時にのみ移動する事は出来たので、
もしかしたらやり方の問題かもしれません。
なお、Symbolはそのままだと著しく使い難いので、使い易くするエディタ拡張も作ってたりします。