コード例 #1
0
    /// <Summary>
    /// タイマーの値をPlayerPrefsに保存します。
    /// </Summary>
    public void RecordPlayTime()
    {
        // 既存の記録を保存するリストを作成します。
        List <float> recordList = new List <float>();

        // 現在のモードを確認します。
        int currentMode = PuzzleModeHolder.GetModeId();

        // ランキングデータの保存タグのリストを作成します。
        List <string> tagList = GetModeTagList(currentMode);

        // 既存の記録を確認してリストに追加します。存在しない場合は、デフォルト値として-1を返します。
        foreach (string rankingTag in tagList)
        {
            float rankingData = PlayerPrefs.GetFloat(rankingTag, -1);
            recordList.Add(rankingData);
        }

        // // デバッグ用: 既存の記録をコンソールに表示します。
        // ShowRecords(tagList);

        // 新しい記録を保存するインデックスを定義します。
        int insertIndex = -1;

        // 既存の記録のうち上位の記録から比較を行っていきます。
        for (int i = 0; i < recordList.Count; i++)
        {
            // 確認中の既存のデータが負の値であればその位置に保存します。
            if (recordList[i] < 0f)
            {
                insertIndex = i;
                break;
            }

            // 新しい記録と既存の記録の比較を行い、新しい記録がより短い時間であればその位置のインデックスを保存します。
            if (playTime < recordList[i])
            {
                insertIndex = i;
                break;
            }
        }

        // 既存の記録を上回った場合はリストにデータを挿入します。
        if (insertIndex != -1)
        {
            recordList.Insert(insertIndex, playTime);
            // Debug.Log($"今回の記録は {insertIndex + 1}位 でした。");
        }
        else
        {
            // Debug.Log($"今回の記録は ランク外 でした。");
        }

        // リストの上位5つのデータを保存します。
        for (int i = 0; i < tagList.Count; i++)
        {
            PlayerPrefs.SetFloat(tagList[i], recordList[i]);
        }
    }
コード例 #2
0
    /// <Summary>
    /// パズルのモードに応じたピースのPrefabを返します。
    /// </Summary>
    GameObject GetPuzzlePiecePrefab()
    {
        // デフォルトのPrefabとして8パズルのピースをセットします。
        GameObject puzzlePiecePrefab = puzzlePiece8Prefab;

        // 現在のモードを確認します。
        int currentMode = PuzzleModeHolder.GetModeId();

        // switch文で現在のモードによってPrefabを切り替えます。
        switch (currentMode)
        {
        case PuzzleModeHolder.Mode15Puzzle:
            puzzlePiecePrefab = puzzlePiece15Prefab;
            break;

        case PuzzleModeHolder.Mode24Puzzle:
            puzzlePiecePrefab = puzzlePiece24Prefab;
            break;
        }

        return(puzzlePiecePrefab);
    }
コード例 #3
0
    /// <Summary>
    /// 現在のモードから読み込むランキングのタグを取得します。
    /// </Summary>
    string GetModeBestTimeTag()
    {
        // タグ名を保持する変数を定義します。
        string rankingTag = SaveTag.PlayRecord8Puzzle1st;

        // 現在のモードを確認します。
        int currentMode = PuzzleModeHolder.GetModeId();

        // switch文で現在のモードによってタグを切り替えます。
        switch (currentMode)
        {
        case PuzzleModeHolder.Mode15Puzzle:
            rankingTag = SaveTag.PlayRecord15Puzzle1st;
            break;

        case PuzzleModeHolder.Mode24Puzzle:
            rankingTag = SaveTag.PlayRecord24Puzzle1st;
            break;
        }

        return(rankingTag);
    }