シヴァのブログ

UnityやUE4や趣味とかいろいろ...

「Unity」 経営ゲーム開発 Part4

ある程度、

問題出題画面の基となる流れが出来てきたので、

色々つまずいた場所と、どんな感じでできたかの画像を張っておく。

 

「経営ゲームなのに、なんでクイズゲーム開発してるんだ?」

っと思う方は、こちらを見て下さい。↓

http://shivat.hatenablog.com/entry/2013/11/12/024351

 

はい。

んで、NGUIで問題出題をまずできるのかな…と思い、まだゲーム要素を入れていないものを開発しました。

 

始めに、どんな感じで出来たのか画像を張る。

まず、現在が何問目なのかを大きく表示

f:id:shivaT:20131226065120p:plain

 

次に、問題、ジャンル、選択肢、あと中央の制限時間(徐々に減ります)を表示

f:id:shivaT:20131226065350p:plain

 

もちろん、制限時間を超えてしまうとTIMEUPになり選択肢が押せなくなります。

f:id:shivaT:20131226065713p:plain

 

そして、TIMEUPもしくは、不正解なら、「正解は〇〇です」と表示されます。

[TIMEUP]

f:id:shivaT:20131226065920p:plain

 

[不正解]

f:id:shivaT:20131226070115p:plain

 

ちなみに、中央の「TouchScreen」は点滅表示されます。

また、正解なら「正解です!」と表示されます。

f:id:shivaT:20131226070249p:plain

 

あとは、問題の見た目ににアニメーションを取り入れました。

①大きく表示されていた問題番号は、

 小さくし、問題や選択肢は徐々に大きくなる。

②選択肢を押すと、回転して正解か、不正解かを表示する。

 

[①拡大・縮小]

f:id:shivaT:20131226070413p:plain

 

[②回転]

[Before]

f:id:shivaT:20131226070844p:plain

 

[After]

f:id:shivaT:20131226070859p:plain

 

開発裏はどのようになっているかというと…こんな感じになっています。

[選択肢を押す前]

f:id:shivaT:20131226072011p:plain

 

[選択肢を押した後]

f:id:shivaT:20131226091023p:plain

 

上の画像を見てわかる通り、

最初、正解か不正解かの画像は選択肢に対して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は日本語が保存できないらしいので、どうするか

  ⇒Base64エンコードして保存して、

   取り出すときはデコードして、正解か不正解かを比較した

  ※意味が分からないなら「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項目のチェックをはずす

  ※これで、マルチタッチを無効に指定できて、シングルタッチとみなせる

 

 

うん。

あとは、これを基にゲーム要素を入れたものを開発していく。

まだまだ、続きます。