(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

ビルド直前にシーンを自動で設定をしようとしてみた【Unity】【エディタ拡張】


このエントリーをはてなブックマークに追加

この記事でのバージョン
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に入っているシーンも自動で設定するというものです。


ScenesInBuildUpdater.cs(失敗)


これを使うと確かにビルド時にシーン自体は変わっているんですが、

残念ながら、その時のビルドには反映されません。


f:id:kan_kikuchi:20170618053814g:plain


という事で敢え無く失敗したので、代替案を考えてみました。


代替案

ビルド直前にシーンを自動で設定できないのなら、常に自動で設定すれば良いじゃない

てな訳で、シーンが入っているディレクトリの他にProjectSettingsの変更も監視するようにしました。


ScenesInBuildUpdater.cs(代替案)


これを行う事で、Symbolが変更された時も自動でシーンの設定がされますし、


f:id:kan_kikuchi:20170618055839g:plain


シーンの設定が変更された時も、強制的にシーンの設定を戻します。


f:id:kan_kikuchi:20170618060324g:plain


つまり、一切手動でシーンの設定は出来なくなり、ミスもなくなるという事です。


おわりに

今回はビルド直前にシーンを自動で設定することは出来ないという形になりましたが、

Resourcesにあるファイルをビルド時にのみ移動する事は出来たので、

もしかしたらやり方の問題かもしれません。



なお、Symbolはそのままだと著しく使い難いので、使い易くするエディタ拡張も作ってたりします。