Menu
CoddyTech

ベストタイム

CoddyのUnityジャーニー「本格的なゲームを作る」セクションの一部。レッスン 53/56。

challenge icon

チャレンジ

中級

最後のステップ:各レベルで自己ベストタイムを記録します。これまでのレッスンの内容はすべてそのまま使います。各レベルのHUDには右上にBestTextがあり、シーンではそれをFinishLineの新しいbestTextフィールドに設定します。

FinishLineで(using TMPro;を追加します):

  • Inspectorで設定するTMP_Text型のフィールドbestTextと、プレイ時間を表すfloatを用意します。プレイ時間は毎フレームTime.deltaTimeずつ増えます。
  • 各レベルの自己ベストは、それぞれのPlayerPrefsキーに保存します。キーはBestTime_とレベル名を組み合わせたもので、たとえばBestTime_Level1です。
  • Startで、そのレベルに保存された自己ベストを小数第1位まで表示します。自己ベストがまだない場合はBest: none、ある場合はBest: 12.4 sのように表示します。
  • プレイヤーがゴールを通過したら、次のレベルが読み込まれる前に、そのレベルの自己ベストがまだない場合、または今回のプレイ時間が自己ベストを更新した場合に、今回のプレイ時間を保存します。より遅いプレイでは自己ベストは変わりません。

Playを押してタイムを記録し、次にその記録の更新を試してから、Checkを押してください。

自分で試してみよう

using UnityEngine;
using UnityEngine.SceneManagement;

public class FinishLine : MonoBehaviour
{
    void OnTriggerEnter(Collider other)
    {
        if (other.GetComponent<Player>() == null) return;

        Scene level = SceneManager.GetActiveScene();
        Debug.Log(level.name + " complete!");
        int next = level.buildIndex + 1;
        if (next >= SceneManager.sceneCountInBuildSettings)
        {
            next = 0;
        }
        SceneManager.LoadScene(next);
    }
}

本格的なゲームを作るのすべてのレッスン