11月29日資料

![00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/c71a6bb5-7d18-cc9c-b9d4-67522e6ed9f0.png)
1：迷路ゲームに「リトライ」ボタンと、タイム＆ベストタイム表示をつけて、ゴールまでの時間を競う遊びに改造してみよう

![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/496bf039-1dba-c7a0-f0e7-0343c7c166d7.png)
2：はじめに前回までで作成した、オリジナルの迷路ゲームのUnityプロジェクトフォルダをUSBメモリからデスクトップにコピーする。その後、フォルダ名を今日の日付にリネームする（オリジナルのUnityプロジェクトフォルダはUSBメモリに保存しておくこと）

![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/851f1ded-8d31-503c-e4e4-538ab4ecb8be.png)
3：Unityを起動してデスクトップからUnityのシーンファイルを開く。次にメニューからFile→Save Sean asを選択する

![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/4210f173-1513-dd03-0206-8a299ecf2b0c.png)
4：今日の日付でUnityシーンファイルをセーブしよう

![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/11bc1c59-6f45-6c4c-5d93-87047303f59c.png)
5：これでUnityの新しいシーンファイルができた。間違わないように古いシーンファイルを削除しよう

<b>リトライボタンの作成</b>
![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/57594677-9f32-b4ec-66c8-d09205df7e4e.png)
6：メニューからGameObject→UI→Buttonを選択する

![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/3dc5ebfd-22c3-4307-118c-a70375c4139c.png)
7：シーンビューでGameタブをクリック

![06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/a78320c3-0efa-4c35-1e5d-4089ef9f9218.png)
8：Hierarchyに作成されたButtonを選択したまま、Inspector欄で名称を「Retry」に変更する。次にRect Transform欄でUIアンカーをクリックし、right&topを選択する

![07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/0b30f201-5aa2-4538-3dd8-b3477c75e263.png)
9：Rect Transform欄でPos Xを-100、Pos Yを-30、Pos Zを0、Widthを120、Heightを40にする。次にButton(Script)欄でNormal Color（＝通常の色）、Highlighted Color（＝カーソルをのせた時の色）、Pressed Color（＝カーソルでボタンを押した時の色）の色をそれぞれ選択する

![08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/f2a8314c-870e-0ea4-c734-9168ee1eece4.png)
10：Retryボタンの下にできたTextをクリックし、Text欄のTextに「Retry」、Font StyleをBold、Font Sizeを32，Horizontal OverflowとVertical Overflowを共にOverflowにする。その後、文字の色をColorで選択する

![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/b0b06487-0d16-86f2-9989-abf15e2da77a.png)
11：メニューからAssets→Create→C#Scriptを選ぶ

![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/a41de998-adbb-2cbd-4597-84a352e066e6.png)
12：新しく作成されたスクリプトに「SceneManagement」と名前をつけて、Assets→Scriptsフォルダに移動させる

![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/5fb1dbd7-443c-ed80-c188-31115ba5ac7a.png)
13：SceneManagementファイルをダブルクリックしてVisualStudioを開き、スクリプトを作成する

![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/3e104039-cf4d-c5a6-1205-5c6f5c49d048.png)
14：HierarchyのCanvasをクリックし、作成したSceneManagementファイルをImspector欄にドラッグ＆ドロップして、アタッチする

![14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/4fd30ee8-d8e3-1999-811f-f6a4e6d21a7c.png)
15：HierarchyでRetryを選択し、Button（Script）のOn Click()欄からメニューをクリックして、表示されたSelect Objectウィンドウから、Sceneタブを選ぶ。その後、Canvasを選択してメニューに設定する

![16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/3d0473ce-6c76-b356-1e8b-55d019ea986d.png)
16：その右にあるプルダウンメニュー（デフォルトではNo Functionが選択されている）を開き、SceneManagement→Replay()を選ぶ

![17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/05d41b43-f0d3-ba09-2cca-8394d0233840.png)
17：ゲームを遊んでRetryボタンが表示されているか、またプレイ中にボタンをマウスでクリックすると、ボールの位置が元に戻るか確認しよう

![18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/3887ede5-abe0-c74b-3d7b-322ba82c78b9.png)
18：リトライボタンを押すとライティングがおかしくなる場合は、以下の設定を行う

![19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/ee4c87bd-e4e2-b16c-8c61-3f959e7d20f2.png)
19：メニューからWindow→Lighting→Settingsを選択

![20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/a6b593f2-198a-5bca-10e8-1cf3494b5955.png)
20：ウィンドウ最下段の「Auto Generate」をオフにしてから、その右にある「Generate Lighting」を選択して、ライティングを焼き付ける。処理が終わったら、このウィンドウを閉じる。

![21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/ef90c893-5815-ce17-0f63-9c99b776f9bb.png)
21：これでリトライボタンを押してもライティングが変化しなくなる。実際に確かめてみよう

<b>タイム＆ベストタイムの追加</b>
![22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/f25b9496-4e99-2927-dbdf-e4b52a1b109c.png)
22：メニューからGameObject→UI→Textを選択する

![23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/1471e3f2-6fb9-f127-f427-444b12d08e4e.png)
23:シーンビューでGameタブを選択し、HierarchyでTextを選択したまま、Inspectorでそれぞれ設定を行う
名称：TimerText、UIアンカーをleft&top、Pos X＝70、Pos Y=-40、Pos Z=0
Text(Script)を「Time:()」、Font StyleをBold、FontSizeを28、Horizontal OverflowとVertical OverflowをともにOverflow

![24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/f55e730c-cc9c-040d-4ef6-34904fc38021.png)
24：メニューからAssets→Create→C#Scriptを選択する

![25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/d371d8e6-0e95-9fbb-9562-f780f48f26f3.png)
25：作成されたスクリプトファイルの名称を「Timer」として、Scriptsフォルダに移動する

![26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/adf85b7f-45c1-49f4-f5ed-4fc1c1f662e4.png)
26：Timerスクリプトを作成して保存する

![27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/c059fba8-0692-1155-57d0-54508a006af9.png)
27：HierarchyでTimerTextを選択後、TimerスクリプトをInspector欄にドラッグ＆ドロップして、アタッチする

![28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/dda06e95-da80-c3b6-0b75-efe50b90bcf4.png)
28：ゲームをプレイして、タイマーが動作するか確認しよう

![29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/0c67fdb7-b02e-564b-d3eb-35c585b1d743.png)
29：ベストタイムの追加の前に、ボールをあらかじめゴール手前に移動させておくと、効率良く作業が進められる

![30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/1410ea3a-41d8-b324-9262-c8e0a4f0f186.png)
30：メニューからGameObject→UI→Textを選択する

![31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/93a81a9d-dabf-e914-6aaf-578097d9e5f4.png)
31：シーンビューでGameタブをクリックし、同様にInspectorで下記を設定する
名称：BestTimerText、UIアンカーをleft&top、Pos X＝70、Pos Y=-40、Pos Z=0

![32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/686a28c0-3cca-0eb0-55e9-20dbbe289c34.png)
32：同様にText(Script)を「BestTime:()」、Font StyleをBold、FontSizeを28、Horizontal OverflowとVertical OverflowをともにOverflow

![33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/45210f2b-330b-13a9-4ece-964451ef30fd.png)
33：メニューからAssets→Create→C#Scriptを選択する

![34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/b5665402-f0f2-823e-6dd9-40cfab817eb1.png)
34：作成されたスクリプトファイルの名称を「BestTimer」として、Scriptsフォルダに移動する

![35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/9e168329-d3e7-5c0a-c965-8cb8337dea2d.png)
35：BestTimerスクリプトを作成して保存する

![36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/56a243f2-b7dc-ceab-b882-8ef403c76a6e.png)
36：HierarchyでBestTimerTextを選択後、BestTimerスクリプトをInspector欄にドラッグ＆ドロップして、アタッチする

![37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/80f3ef5c-9926-1bbf-9117-ff2fdce43cb6.png)
37：ゲームをプレイして、タイマーとベストタイマーがそれぞれ機能するか確認しよう

![38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/b05b3bd4-e9ed-4f1f-aa12-2f82406a6579.png)
38：ただし、このままではRetryを押すとボールが動かなくなるので、以下で調整していく。はじめにScriptsフォルダでGoalUIスクリプトをダブルクリックして、VisualStudioで開く

![39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/78fe4436-bbaa-69f8-8e53-79694ede0b37.png)
39：ボールが動かなくなるのは、ボールがゴールに到達した段階で、ゲーム内部の時間がストップしてしまうから。そこで（いろいろな対策が考えられるが、ここではひとまず）23行目の「Time.timeScale=0」の前に「//」をつけて、この行を無効にする。その後、上書き保存する

![40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/3c33e121-5f68-2afc-fb1d-7dc875b32d1f.png)
40：同じようにScriptsフォルダでMissUIスクリプトをダブルクリックして、VisualStudioで開く

![41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/1c974940-065e-6980-6d4c-7bb1adb7911a.png)
41：同様に23行目の「Time.timeScale=0」の前に「//」をつけて、この行を無効にする。その後、上書き保存する

![42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/9853587c-1519-7c53-c29f-3711b6f0d62c.png)
42：これでゴールしたり、ミスしたりしても、ボールが止まることがなくなったが、リトライボタンを押して再プレイが可能になった。ただし現状ではベストスコアがいつまでも（Unityを再起動しても）記録されたままになってしまう問題がある

![43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/4ff5bc54-ea60-909d-6533-48e912b7dc19.png)
43：そこでScriptsフォルダを開き、そのうえでメニューからAssets→Create→Folderを選択して、新規フォルダを作る

![50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/1a34ad4a-4f57-198c-0d90-610e1252d047.png)
44：新規フォルダの名称を「Editor」にする

![45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/5fc8b1ac-d35c-4273-756b-7566c1c439ab.png)
45：メニューからAssets→Create→C#Scriptを選択する

![46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/826376e4-c167-8cc5-0ac4-c2519339f25a.png)
46：作成されたC#スクリプトの名前を「PlayPrefsResetter」とする

![47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/fd81fbca-2014-66f7-0633-168a00a11276.png)
47：PlayPrefsResetterスクリプトをダブルクリックしてVisualStudioで開き、スクリプトを作成する

![48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/22099780-cb03-e1b3-ba92-67ce6bf16106.png)
48：その後、Unityを一度終了して再起動する。するとメニューに新しくToolsが追加される。ここでTools→Reset PlayerPrefsを選択すると、ベストタイムがリセットされる

![49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166666/30a82d12-5cc8-c8b3-cdde-06da3f451327.png)
49：再びプレイして、ベストタイムがリセットされるか（デフォルトでは999になる）確認しよう