2014年12月15日月曜日

uGUI ゲーム内キーコンフィグの実装

EventSystemが備わったunity4.6以降のお話。
実装したのが少し前でもう忘れてる。

スタンドアローン版では起動時に設定ダイアログを出すことでキーコンフィグが可能だが、
ダイアログを出したくないし、ゲーム内でいつでもキーコンフィグができるようにしたいし、uGUIだって使いたい!がために考えた方法。

必要な手順は下記の3つ
  1. Inputのラッパークラスを作成
  2. EventSystemのStandaloneInputModuleの置き換え(※)
  3. InputManagerにJoystickAxisを追加
で、良かったはず。
忘れないうちに文章化すべきだった…


手順1.ではInputのラッパークラスを作成し、キーマップを用意する。
手順から抜けているが、キーマップを変更するためのUI(キーコンフィグ)ももちろん必要。
これでほぼゲーム内キーコンフィグを実現できたようなものだけど、
これだけではuGUIのOnSubmitやNavigation等の用意された機能を利用することができない。

そこで手順2.のStandaloneInputModuleの置き換えを行う。
StandaloneInputModule内でInputが利用されている箇所を手順1.で作成したInputラッパークラスに書き換えたスクリプトを用意し、置き換える。(※)

手順3.はjoystickのアナログ入力に対応するためInputManagerにJoystickAxisの1st~20thを設定する。
こうすることでInputがアナログ入力を拾ってくれるのでラッパークラスでも拾うことができる。
アナログ入力を使用しないのであれば手順3.は行う必要がなく、
キーマップで入力の対応が出来ていればInputManagerの設定自体が不要になる。
(マウス関連は弄ってないのでわからない。不要にならないかも。)


大雑把なイメージ 間違ってたらごめんなさい



※注釈というか余談

StandaloneInputModuleのソースはこちらで公開されています。(少し古いみたいです)
提供元は下記リンクのやりとりを見たところ
UnityTechnologiesの方が非公式に公開してくれているアカウントのようです。
オープンソースとして公開される予定みたいなので、それを待ってもいいかもしれません。

0 件のコメント:

コメントを投稿