今回は趣向を変えて、
クイズゲームを作ってみました。
http://rafeel.s602.xrea.com/webplay.html
WebPlayer版もビルドしたので実際に遊べます。
問題は2600問ぐらい入ってます。
難易度はかなり高いです。
uGUIの勉強で前から少しづついじってたのですが、
今遊んでいる某社のクイズゲームの攻略wikiにクイズがあったんで
そのデータをお借りしました(というか本番のための暗期練習に使えます)
せっかくunityなのでunity-chanもお借りしました。
uGUIの構造としては、Canvas→Panel→クイズの問題、選択ボタン
といった構造
パネルは、解答用とジャンル選択用があって、初めはジャンル選択用を表示させて、
パネルの表示・非表示でメニューを切り替えてます。
正解とか不正解なんかの文字。縁取りや影つけもできます。
文字を大きくするとややボケますね。
fontサイズで直接大きくしても20ぐらいから大きくならないので
Scaleで大きくしてるんだけど、なんか間違ってるのかな?
あと、漢字のfontがなんか変な気がする。なんか中国語みたいな日本語。
【Unity開発】uGUIのTextまとめ【ひよこエッセンス】 - ひよこのたまご Unity5(C#)でゲーム開発入門
こちらを読んで分かりましたが、テキストを表示するエリアを大きくしてないから
fontサイズを大きくすると表示されない模様。解決しました!
あと、音を初めて出してみました。正解音、不正解音
さすがゲームエンジンなのですごい簡単に出ました。
問題の読み込みです
問題はテキストファイルをResourcesフォルダに置いて、読み込んでます。"/"でjoinされたCSVファイルになります。
qq=new ArrayList(); TextAsset csv = Resources.Load("qow") as TextAsset; StringReader reader = new StringReader(csv.text); while(reader.Peek()>-1) { qq.Add ( reader.ReadLine() ); }
問題の構造は、
ジャンル番号/問題/答え/選択肢1/選択肢2/選択肢3
になります。すべて四択問題です。
まず問題全体から任意の問題を選び、ジャンルを表示します
(ジャンル限定ではこの時に特定ジャンルで縛ります)
次に選択した問題の答えと誤答選択肢を、
4つのボタンにランダムに配置します。
string qqq=(string)qq[no]; string[] values = qqq.Split('/'); GameObject.Find ("SectionText").GetComponent<Text>().text=Section[ int.Parse(values[0]) ]; string atxt = ""; string atxt1 = ""; string atxt2 = ""; string atxt3 = ""; int mode = Random.Range (0, 10); if (mode == 0) { atxt=values[2];GoodNo=1; atxt1=values[3]; atxt2=values[4]; atxt3=values[5]; } … quizText="問題: "+(string)values[1]; bt1.text = atxt; bt2.text = atxt1; bt3.text = atxt2; bt4.text = atxt3;
あとはボタンをクリックしたタイミングで、答えとあっているか判定し
合っていれば、「正解」表示、正解音、unitychanがWINモーションといった感じです