「Unity」 経営ゲーム開発 Part4
ある程度、
問題出題画面の基となる流れが出来てきたので、
色々つまずいた場所と、どんな感じでできたかの画像を張っておく。
「経営ゲームなのに、なんでクイズゲーム開発してるんだ?」
っと思う方は、こちらを見て下さい。↓
http://shivat.hatenablog.com/entry/2013/11/12/024351
はい。
んで、NGUIで問題出題をまずできるのかな…と思い、まだゲーム要素を入れていないものを開発しました。
始めに、どんな感じで出来たのか画像を張る。
まず、現在が何問目なのかを大きく表示
次に、問題、ジャンル、選択肢、あと中央の制限時間(徐々に減ります)を表示
もちろん、制限時間を超えてしまうとTIMEUPになり選択肢が押せなくなります。
そして、TIMEUPもしくは、不正解なら、「正解は〇〇です」と表示されます。
[TIMEUP]
[不正解]
ちなみに、中央の「TouchScreen」は点滅表示されます。
また、正解なら「正解です!」と表示されます。
あとは、問題の見た目ににアニメーションを取り入れました。
①大きく表示されていた問題番号は、
小さくし、問題や選択肢は徐々に大きくなる。
②選択肢を押すと、回転して正解か、不正解かを表示する。
[①拡大・縮小]
[②回転]
[Before]
[After]
開発裏はどのようになっているかというと…こんな感じになっています。
[選択肢を押す前]
[選択肢を押した後]
上の画像を見てわかる通り、
最初、正解か不正解かの画像は選択肢に対して90度で配置しています。
選択肢が押されたら、選択肢をTweenで0.5秒で90度回転させ、
一度、
yield WaitForSeconds(0.5);
で待ってから、
次は、正解か不正解かの画像をTweenで0.5秒で90度回転させています。
これによって、
まるで画像が180度回転しているかのように見せています。
…今さらですが、
180度回転させて90度になった時に、
Atrasで切り替えたらよかったんじゃないかと、ブログを書いていて思いました。
まあ、その場合、また色々工夫しないとダメですが…。
うん。
ああでもない、こうでもないとやっていると1週間かかりました。
もともと、拡大・縮小とか回転させるのは考えてなくて、
開発中に
「回転したら選択肢が押されている感じが表現されていいな…」
と思い、やってみました。
ですが、
やっぱり理想を実現するにはエラーが付ものでした。
例えば、
データベースから問題、正解、不正解、ジャンルを通信して持ってくる方法を、
どのようにしたらいいのかを悩みました。
JsonとかXMLとかを使用したら、一気に持ってこれるらしいですが、
Jsonは、種類が多く、使用しようとしたらエラーが出まくったのでやめました。
XMLは調べてません。
そんなこんなで、wwwformをループで回して、
返ってきた値(文字)をArray配列に格納することで、実現しました。
メモリの消費量がえげつないことになると思いますが…。
もちろん、Dispose()は使用しています。
他には、
・「正解、不正解かをどうやって判定する」にはどうするか
⇒PrayerPrefsに正解を保存する…できない!
⇒PrayerPrefsは日本語が保存できないらしいので、どうするか
取り出すときはデコードして、正解か不正解かを比較した
※意味が分からないなら「unity Base64 PlayerPrefs」でググってください
・「問題をランダムにする」にはどうするか
⇒http://shivat.hatenablog.com/entry/2013/12/22/092035
⇒これをIDに利用して、IDからデータベースを参照して通信し、
問題を引っ張ってくる
・選択肢を一定の箇所に表示させないようにするにはどうするか
⇒選択肢はArrayに格納されているので、
選択肢のところだけランダムに入れ替える
※array[問題文,正解,不正解1,不正解2,不正解3,カテゴリー]の場合、
array[1]~array[4]ランダムに入れ替える
・「AtrasのSprite画像を切り替える」にはどうするか
⇒http://shivat.hatenablog.com/entry/2013/12/21/211537
・「制限時間の表示の仕方」はどうするか
⇒http://shivat.hatenablog.com/entry/2013/12/26/085607
・「ボタンがタッチされるまで待つ」にはどうするか
⇒http://shivat.hatenablog.com/entry/2013/12/26/085607
・「ボタンを2つ以上クリック(タッチ)できないようにする」にはどうするか
⇒UICameraのAllow Multi Touch項目のチェックをはずす
※これで、マルチタッチを無効に指定できて、シングルタッチとみなせる
うん。
あとは、これを基にゲーム要素を入れたものを開発していく。
まだまだ、続きます。