Сохранить последнюю позицию прокрутки или прямоугольного преобразования

У меня есть Уровень прокрутки, но мне нравится, когда я иду, чтобы выбрать уровень, который мне нравится, чтобы он показывал мне всегда последний уровень (если я заканчиваю уровень 13, разблокируй мне уровень 14 и когда я иду на сцену меню, чтобы показать мне уровень 14 в центре после этого, если я закончите уровень 14, когда я снова вхожу в сцену меню, чтобы показать мне уровень 15 в центре), возможно сделать это и сохранить последнюю позицию последнего уровня. Когда я открываю сцену меню, она показывает мне с нижней стороны - рисунок 1, но мне нравится, когда я открываю сцену меню, чтобы открыть с этой позиции - см. Рисунок 2.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;


public class LevelData
{
    public LevelData(string levelName)
    {
        string data = PlayerPrefs.GetString(levelName);
        if (data == "")
            return;

        string[] allData = data.Split('&');
        BestTime = float.Parse(allData[0]);
        SilverTime = float.Parse(allData[1]);
        GoldTime = float.Parse(allData[2]);
    }

    public float BestTime { set; get; }
    public float GoldTime { set; get; }
    public float SilverTime { set; get; }
    public float BronzeTime { set; get; }
}

public class Menu : MonoBehaviour
{
    private static Menu instance;
    public static Menu Instance { get { return instance; } }
    private int idLevel;
    public Text timeText;
    public Text txtselectLevel;
    public string[] Level;
    public ScrollRect scrol;

    public GameObject PlayPanel;
    public GameObject star1;
    public GameObject star2;
    public GameObject star3;

    void Start()
    {
        instance = this;
        PlayPanel.SetActive(false);
        GameManager.Instance.Load();
        idLevel = 0;
        txtselectLevel.text = Level[idLevel];
        PlayerPrefs.GetString(idLevel.ToString());

        star1.SetActive(false);
        star2.SetActive(false);
        star3.SetActive(false);

    }

    public void Scenes()
    {
        SceneManager.LoadScene("L" + idLevel.ToString());
    }

    public void SelectLevel(int i)
    {
        idLevel = i;

        PlayerPrefs.SetInt("idLevel", idLevel);
        txtselectLevel.text = Level[idLevel];

        LevelData level = new LevelData(i.ToString());

        string minutes = ((int)level.BestTime / 60).ToString("00");
        string seconds = (level.BestTime % 60).ToString("00.00");

        timeText.text = (level.BestTime != 0.0f) 
            ? "Best Time: " + minutes + ":" + seconds 
            : "";

        if (level.BestTime < level.GoldTime)
        {
            star1.SetActive(true);
            star2.SetActive(true);
            star3.SetActive(true);
        }
        else if (level.BestTime < level.SilverTime)
        {
            star1.SetActive(true);
            star2.SetActive(true);
            star3.SetActive(false);
        }
        else if(level.BestTime < level.BronzeTime)
        {
            star1.SetActive(true);
            star2.SetActive(false);
            star3.SetActive(false);
        }
        else
        {
            star1.SetActive(false);
            star2.SetActive(false);
            star3.SetActive(false);
        }

        PlayPanel.SetActive(true);
    }

    public void ExitPanel()
    {
        PlayPanel.SetActive(false);
    }
}

0 ответов

Другие вопросы по тегам