皆さん、こんにちは!👋
今回はUnityで利用できるノベルエンジンであるNaniNovelで、僕が直面したちょっとした謎についてお話しします。
シナリオを再生しようとしたら、なぜか最初にタイトルメニューが勝手に表示されてしまうという問題にぶち当たりました。これが、シナリオの再生を妨げる厄介なヤツだったんです。🤔
犯人探し
最初は本当に謎でした。プログラムのどこかでタイトルメニューを明示的に呼び出しているのかと思い、色々と探したのですが、見つからず…。
途方に暮れていたら、どうやらNaniNovelの初期化処理に秘密があることが分かったんです。NaniNovelが起動すると、Assets/NaninovelData/EditorResources.asset
という設定ファイルに登録されているプレハブたちが、自動的に読み込まれてDontDestroyOnLoadに配置されるらしいんです。
解決策
このEditorResources.asset
に登録されているプレハブの中に、TitleUIというやつがいました。これにVisibleOnAwake(起動時に表示するかどうか)というパラメータがありデフォルトでTrueになっていたんです。つまり、NaniNovelが初期化されるたびに、このTitleUIが自動的に読み込まれて表示されていた、というのが真相でした!💡
ということで解決策は以下の3つになると考えました。
- TitleUIプレハブを改造する:VisibleOnAwakeをfalseにしたプレハブを作って登録し直す。
- EditorResources.assetからTitleUIを消す:そもそも使わないなら、ファイルから削除しちゃう。
- TitleScriptを設定する:NaniNovelのスクリプト設定で、適当なシナリオをタイトル画面に設定する。(ただし、これにはシナリオにセリフなどの内容がないと意味がないみたいです。)
色々考えた結果、僕は一番シンプルで根本的な解決策である「2. EditorResources.assetからTitleUIを削除する」を選びました。使わないものは最初から入れない、という方が、今後メモリ使用量などを考える上でも賢い選択だと気づいたんです。
まとめ
今回の件で、NaniNovelの内部構造について一つ学びがありました。初期化時にEditorResources.asset
から自動でプレハブが読み込まれる、という仕様は、今後の開発でも重要なポイントになりそうです。
もし同じような問題で悩んでいる人がいたら、まずはAssets/NaninovelData/EditorResources.asset
の中身を確認してみてください!不要なプレハブは削除してしまうのが、一番手っ取り早くて確実な解決策ですよ。👍
コメント