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