叫ぶほど便利だったエディタ拡張 / Unity
はじめに
エディタ拡張を食わず嫌いしていた私は、そのあまりの便利さに叫んでしまいました。
お久しぶりです。
今回はエディタ拡張を使って制作を効率化しました。というのも、現在進行中のプロジェクトのデバッグ作業が面倒に感じてきたのです。
ゲームで機能やストーリーを実装した際、それを追加した地点へゲームを進めてデバッグする必要があったためです。(今書いていても思うんですがめんどくさすぎますね!)
そこで今回は重い腰を上げてエディタ拡張をしてみました。
方針と実装
方針
「ドロップダウンでゲーム進行上の、ある地点を指定してスタートボタンを押すことで目的の地点へゲームを進行してもらう」エディタ拡張を目指します
前提として、私のプロジェクトではゲームの進行状況(ステート)をEnum型で表現しています。一気に指定されたステートへジャンプしたいところではありますが、それまでのステートを順々に踏まなければ色々と不具合が生まれてしまいそうです。
例えば、A村でアイテムをゲットしてからB城へ行くはずが、いきなりB城へ来てしまっては「持っているはずのアイテムを持っていない」という状況になってしまいます。
なので、値などの変更は順々にステートを踏む必要がありますし、逆に、値などを変更しない会話シーンなどは省略することでデバッグ作業を効率化できます。
↑実装のポイントについてはこちらを参考にさせていただきました。
実装
Enum型のドロップダウンはEditorGUILayout.EnumPopupを使って実装し、そこで選択された進行状況をゲームマネージャーに渡してゲームを開始しています。
gista305a2194775e170e35051112faaa7d0
また、ゲームマネージャーは、渡された進行状況までのすべての進行状況を順々に辿り、それぞれの進行状況で行われた値の変更などを行っています。
まず、通常時はゲームが最初から始まってしまい、ここからデバッグ作業先まで手動でゲームを遊ばないといけません。(だるい)
今回のエディタ拡張を使うことで、一気にデバッグ作業先まで進める(ように見せかける)ことができます。(便利!)
終わりに
最後にこんなことを言うのもなんですが、エディタ拡張というのは得られる効率化が拡張の手間より大事なのかをしっかり見極めてから実装するのが良いと思います。
今回は勉強も兼ねてエディタ拡張を使ってみましたが、これからはもう少し拡張すべきか見極めてから判断しようかなと思いました。
ありがとうございました。