Сохранить последнюю позицию прокрутки или прямоугольного преобразования
У меня есть Уровень прокрутки, но мне нравится, когда я иду, чтобы выбрать уровень, который мне нравится, чтобы он показывал мне всегда последний уровень (если я заканчиваю уровень 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);
}
}