Unityでクイズアプリ(3)
前回は、Quizシーンから、Resultシーンへの画面遷移の途中まで行った。
http://twosquirrel.mints.ne.jp/?p=13137
前回に引き続き、以下のサイトを写経していく。
Labels: iOS 投稿者:tsuyoshi
uGUIで簡単!Unityクイズアプリで社内コミュニケーションの活性化
2015.05.28
https://engineer.blog.lancers.jp/2015/05/ugui_quiz_unity/
ソースコードもこちらに公開してくださっていて、大変ありがたい!
なお、基本は、以下の本に沿ってやっていく。
Unityをやるときは、必ず、以下の本を読みながらやっている。
<Unityの流れ>
(1)プロジェクトの作成
(2)オブジェクトの配置
(3)スクリプトの作成
(4)スクリプトのアタッチ
(環境)
Windows8.1
Unity5.4.3f1
Visual Studio Community 2015
前回は、Quizシーンで、実行(△ボタン)して、選択肢をクリックすると、画面遷移(すべてが○となってしまうが)するところまで行った。
(1)スクリプト間でのデータの受け渡し
Resultシーンにて、Assets > Create > C#Script で、ResultMgr というスクリプトを作成。
●Judge.cs の編集
ここはもう理解できずにコピペしているだけ。。。とほほ。。。
Quizシーンから実行してみて、選択肢をクリックして、正解と不正解がconsole.logにしっかり表示されているか確認。
(2)状態によって表示を切り替える
Assets の中に、Resources フォルダを作成し、その中に、maru.pngとbatsu.pngをドラッグ&ドロップ。
ResultMgr.cs の編集
ResultMgr.cs をResultシーンのMain Cameraにアタッチ。
Quizシーンから実行して、Imageでbatsu が表示されることを確認。
(3)選択した回答によって表示を切り替える
ResultMgr.cs の書き換え
Resultシーンで、Main Camera > JudgeUI > JudgeLabel をクリックして、InspectorのText (Script)のTextを、「正解!」に変更。
上記スクリプトとあわせて、デフォルトの画面を、正解画面にしておいて、Quizシーンで不正解の選択肢を選んだ場合に、Resultシーンの「JudgeLabel」と「JudgeImage」を不正解!と、batsu.pngに変更するようになっている。
Quizシーンから実行して、確認。
ちゃんと、うまくいっていることを確認した。やっとクイズらしくなってきた!
(4)ResultシーンのNextボタンに次の問題へいくロジックを書く。
GameStart.csを修正して、ResultシーンならばQuizシーンに移動するように、スクリプトを書き加える。
Resultシーンで、Hierarchyタブの、Main Camera > JudgeUI > NextScene をクリックして、Inspectorタブ の、Button(Script) > On Click() のすぐ右下のボタンをクリックして、GameStart > NextQuiz() をクリック。
実行すると、Quizシーンと、Resultシーンを行き来することができるようになったことが確認できる。(このままだと無限ループになってしまう。)
(5)得点機能をつける
ResultMgr.cs の編集
ここらへんはいまいちはっきりとは理解できず。。。
File > New Scene より、「Score.unity」というシーンを作成して保存し、File > Build Settings を開いて、Score.unity をドラッグ&ドロップ。
Main CameraをDeleteしてから、Assetsの、Main Camera PrefabをHierarchyタブにドラッグ&ドロップ。
GameObject > UI > Event System をクリックして、Event Systemを追加。
GameObject > UI > Text をクリックして、Textを追加。これを右クリックして、Duplicate
Text(2)を、Scoreという名前に変更して、位置を調整。
Textを、Inspectorタブで、上の方に位置調整して、Text(Script)のところに、Score と記載。
Assets > Create > C#Script で、Score.cs という名前でスクリプトを作成。
Score.cs をダブルクリックして編集。
AssetsのScore.cs を、HierarchyタブのMain Cameraにドラッグ&ドロップ(スクリプトをオブジェクトにアタッチ)。
ボタンのテキストを変更。
実行すると、以下のようになる。
(6)GameStart.csにて、3回問題を繰り返したら、Scoreシーンに遷移するように変更する。
また、今いるシーンがScoreという名前であれば、Titleという名前のシーンに移動する ように、GameStart.cs を編集する。
Scoreシーンにて、Buttonをクリックして、Inspectorタブ > Button(Script) > on Click() のすぐ右下のところをクリックして、GameStart > BackToTitle をクリック。
実行してみて、うまくいくことを確認。
(7)あとは、以下を参考に、Androidアプリで、戻るボタンでアプリを終了できるように設定。
http://twosquirrel.mints.ne.jp/?p=11844
GameStart.cs を編集
(8)File > Build Settings… で、以下のように設定してから、Build をクリック
数分間かかる。約20MB.
(9)
自分のスマホ(Android)にメールして、インストール。
小さすぎる。。。最初の、Gameタブの16:10 Portrait がいけなかったのか。。。
(10)Gameタブで、WXGA Portrait(800×1280) に変更する。
ボタンがすごく小さくなってしまう。。。
しかし、これだと、字の解像度が荒くなっていまう、、、最初からWXGA Portrait(800×1280)で、文字の大きさなどを調整すればよかったのかも、、、
もう一度Buildして、自分のスマホ(arrows M03(720×1080))で確認。
大きさ的にはいい感じになった。他の解像度(1080×1920)のスマホでは、どのように表示されるのかは私には確認できていない。
今後の課題として、
(1)データベースに問題と回答を入れておいて、5問とか10問とか、問題を出したい。
(2)結果をNCMB(Nifty Cloud Mobile Backend)や、Firebaseに保存して、オンラインのランキングをつくりたい。
(3)記述式問題(キーワードが入っていれば●点加算、、、などでスコア化など)をしたい。
難しそう。。。
<Unityでクイズアプリ(1)(2)(3)の写経元と、リンク>
Labels: iOS 投稿者:tsuyoshi
uGUIで簡単!Unityクイズアプリで社内コミュニケーションの活性化
2015.05.28
https://engineer.blog.lancers.jp/2015/05/ugui_quiz_unity/
ソースコードはこちらに公開してくださっていて、大変ありがたい。
http://twosquirrel.mints.ne.jp/?p=13021
ディスカッション
コメント一覧
まだ、コメントがありません