Roll a Ball の改造を完了する。
エンディングシーンを用意する
メニュー File → New Scene
Empty を選択
(シーン名は保存のときに決める)
Hierarchyに以下の2つを追加(右クリックのメニューから)
Camera
UI → Text - TextMeshPro
名前 TotalScore
位置や文字サイズを調整(下の画像参照)
シーンを保存する
メニュー File → Save As
シーン名 Ending
トータルスコア表示用のスクリプトを作成
以下のコードではPlayerPrefsを利用してトータルスコアを記録している。
PlayerPrefsはゲーム設定(コントローラーのボタン割当てやゲームのモードなど)の記録用のもので保存した値はOSのレジストリに誰でも読める形で暗号化無しで保存されている。そのため保存する値には注意が必要。
Ending.cs
参照記事: 公式ドキュメント / スコアを保存!コピペで終わるPlayerPrefsの実装方法 / 【Unity】ローカルデータの保存
ゲームオブジェクトTotalScore にアタッチする(または add Component する)
ビルドプロファイルでシーンリストにEndingを加える
File -> Build Profiles
最後のシーンになるように順番を入れ替える
スコア処理の修正
PlayerController.cs に以下を追加
//トータルスコア -メンバ変数
private int total_score;
//トータルスコアの初期化 -Startメソッド
total_score = PlayerPrefs.GetInt("TOTAL SCORE", 0);
//このステージのスコアをトータルスコアに加えて保存 -SetCountTextメソッドのステージクリア時の処理
//Invokeメソッドで次のシーンを読み込む場合 Loadメソッドの中
//StartCoroutineメソッドで次のシーンを読み込む場合 DelayMethodメソッドの中
total_score += count;
PlayerPrefs.SetInt("TOTAL SCORE", total_score);
PlayerPrefs.Save();
再掲 GP08デバッグ
この段階ではトータルスコアをゲーム開始時に0にリセットしていない
このままではゲームを実行するたびに前回のトータルスコアに加算される
次のステップでスタートボタンを押したときに0にリセットするようにする
シーンを複製
Ending を選択してCtrl+D
シーン名を変更 Opening
Build Profiles からOpeningシーンをProjectのScenesフォルダからDnDで追加する
※add Open Scenes ボタンで追加するにはシーン Opening を開いておくこと
Openingの順番を先頭にする
TotalScore オブジェクトの名前を変更
ゲームオブジェクト名 Title
TitleのInspectorから以下を修正
Endingスクリプトを remove component
Text Inputの文字列を修正
New Text → Roll a Ball ※
Hierarchyに以下を追加:
UI → Button - TextMesh Pro
タイトルに重ならないように位置を調整する
Buttonオブジェクトの下の階層のText(TMP)オブジェクトを選択
Inspectorで作業:
Text Inputの文字列を修正
New Text → START ※
※Textの文字列のFontは和文に対応していない。
日本語を使えるようにするには和文フォントをUnityプロジェクトに追加してTextのFontを切り替える必要がある。
STARTボタン用のスクリプトを作成
コードの内容:
MiniGameシーンの読み込み
トータルスコアを0にリセット
スクリプト名 OpeningButton
スクリプトをシーンに配置:
Hierarchyに空のゲームオブジェクトを追加
右クリック → Create Empty
オブジェクト名: GameSystem
ゲームオブジェクトGameSystemにC#スクリプトのOpeningButtonをアタッチする
ゲームオブジェクト Button の設定:
HierarchyからButtonを選択
InspectorでButtonをClickしたときに実行するスクリプトを設定する
+ボタンを押してイベントリスナーを追加
ButtonゲームオブジェクトのInspectorの On Click のイベントリスナーを設定:
ステップ1
None → ※ → GameSystem オブジェクト
※検索窓を Scene に切り替える
ステップ2
No Function → OpeningButton → StartGame()
参考A:
ボタンにアニメーションを設定 https://gametukurikata.com/ui/startbuttonui
上記のボタンのスクリプトはこちらのサイトと同様の手順で設定している。
※GameSystemオブジェクトを作成せずにButtonオブジェクトに直接スクリプトをアタッチして設定してもよい。
参考B:
C#スクリプトでボタンのイベントリスナーを設定する https://gametukurikata.com/basic/addlistener
Buttonゲームオブジェクトにこのスクリプトをアタッチするだけで済む。
InspectorでOnClickイベントの設定が不要
ここまでの内容を「中間課題2」とする。
Webclassの第8・9・10回課題(中間課題2)にアップロードする
(1/2) UnityのScene編集画面またはGame実行画面のスクリーンショット
(2/2) プロジェクトをExportしたファイルをアップロードする
※Exportに含まれる内容をよく確認する
※TemplatesとText Mesh Pro以外の全ファイルを含めること
課題が完了している受講生はSnap!のGPx03の課題に取り組む時間とする。