今回はホラーゲームの完成プロジェクトアセット”Horror FPS Kit “のレビューをお送りします。
アセットをインポートする際「現在のプロジェクト設定が上書きされます」とダイアログが表示されます。新規のプロジェクトを作成してからアセットをインポートしました。
アセットのインポートが完了したので[Project]ウィンドウでファイルの内容を確認しましょう。
[HFPS 1.3]フォルダの中には次のフォルダが有ります。
メニュー:File > Build Settingsを選択して[Build Settings]ウィンドウを開くと、”MainMenu”、”HorrorScene”、”Showcase”の順でシーンファイルが登録されています。
それでは”MainMenu”を開いて再生してみましょう。再生ボタンをクリックして実行するとタイトル画面とメインメニューが表示されます。
メニューから”Play Horror”をクリックするとレベル選択画面が表示されます。ここでは”Main Horror Scene”を選択します。
“Main Horror Scene”シーンを再生すると[Console]ウィンドウに次のエラーメッセージが大量に表示されます。
プレイヤーを操作してみるとWキー前進、Aキー左移動、Sキー後退、Dキー右移動といったキーボード操作ができません。
[Console]ウィンドウに表示されているメッセージの詳細をみると次のような内容になっていました。マウスの視点操作については問題ありません。おそらく、プレイヤーの移動キー割り当てができていないのではないかと思いますが、正直、エラーメッセージを見ても見当がつきません。ちなみに[Project]ウィンドウを見ると[Assets]フォルダの中に[Data]フォルダが作成されていて中は空っぽです。
エラーの原因が分からないまま考えていてもしょうがないので、制作者の”THUNDERWIRE STUDIO “に問い合わせメールを出してみたところ、一日後に返事がきました。英文を翻訳すると次のような内容です。
問題は”RebindableInput.cs”にあります。原因は”Main Menu”シーンを実行した際、このスクリプトが設定ファイルの保存場所がすでに設定されていると判断して、設定ファイルの保存場所を保存しないことです。
添付ファイルで修正スクリプトを送付しましたので、古いファイルを置き換えてください。その後、スクリプトが設定ファイルのパスを設定するために”Main Menu”シーンを実行してください。
次の場所にある”RebindableInput.cs”スクリプトを置き換えてください。
Assets > HFPS 1.3 > HFPS Assets > Content > Scripts > SerializationManager フォルダ
ということでとりあえずメールで送ってもらった”RebindableInput.cs”を上書きしてみました。
すると!ちゃんとプレイヤーを移動できるようになりました!ありがとう”THUNDERWIRE STUDIO “サポート!
サポートの回答メールに添付されていたスクリプトファイル”RebindableInput.cs”と、元のスクリプトファイルを比較して見たところ、次の2行が追記されていました。
“PlayerPrefs.SetStringというのは、公式マニュアル を見ると”キーに対する値を設定します”と書いてあります。そしてその設定の保存場所については次のように書いてあります。Windowsのレジストリに保存されているようです。
というわけで、レジストリを調べてみましょう。Windowsのスタートボタン > Windows システムツール > ファイル名を指定して実行 を選択して。ウィンドウが開いたら”regedit”を入力して[OK]ボタンをクリック。
ユーザーアカウント制御のダイアログが表示されるので[OK]をクリックするとレジストリエディターが開きます。メニュー:編集 > 検索 を選択して検索する値に”ThunderWire”を入力して検索します。
すると下記の場所にキーが保存されていました。
コンピューター\HKEY_CURRENT_USER\Software\Unity\UnityEditor\ThunderWire\TWHFPSKit
レジストリをいったん削除し、スクリプトファイル”RebindableInput.cs”の違いでレジストリの値がどう変わるのか比較してみたのが次の図です。
古いスクリプトファイル”RebindableInput.cs”で実行した場合のレジストリキー
修正したスクリプトファイル”RebindableInput.cs”で実行した場合のレジストリキー
比較してみると、修正したスクリプトを使用した場合はレジストリに”ConfigPath”と”InputConfig”キーが増えています。キーの名前をダブルクリックして値を見てみると”ConfigPath”キーにはUnityプロジェクトフォルダ内のAssets > HFPS 1.3 > Data フォルダが値として設定されていました。そして”InputConfig”キーには”GameConfig.”が値として設定されていました。
サポートの回答メールに書いてあった”スクリプトが設定ファイルの保存場所がすでに設定されていると判断して、設定ファイルの保存場所を保存しない“という内容について、最初は意味がよく理解できなかったのですが、レジストリを調べて分かったのは、スクリプトファイル”RebindableInput.cs”が実行されると、プロジェクトフォルダ内での設定ファイルの保存所をレジストリキーに設定する、ということだったようです。
ひとまず無事にトラブルが解決しました。次回はアセットファイルの内容を詳しく調べてみたいと思います。