//Допустим есть две сцены Level1 и Level2
public String Lvl1, Lvl2;
//временная переменная для помещения позиций точки входа
string Pos;
//в этих сценах есть допустим по две точки входа с некими координатами в которые может телепортироваться игрок
public Vector3 Point1_1, Point1_2, Point2_1, Point2_2;
//временная переменная для активации точки телепорта
Vector3 teleport;
//естественно что если точек много то лучше использовать массивы или списки
Ну и естественно префаб игрока
public GameObject Player;
void Awake()
{
Lvl1 = "Level1";
Lvl2 = "Level2";
//точки первой сцены
Point1_1 = new Vector3(0,1,1); Point1_2 = new Vector3(2,1,1);
//точки второй сцены
Point2_1 = new Vector3(3,1,1); Point2_2 = new Vector3(4,1,1);
}
//Функцию старт пока пропускаем и идем ниже в функцию LoadLvl
void Start()
{//в новой сцене все скрипты грузятся заново
(if (PlayerPrefs.HasKey("LoadTeleportPoint")) //если есть строка загрузки телепорта в PlayerPrefs
{
PlayerPrefs.GetString("LoadTeleportPoint");
// далее получаем массив координат, разбивая строку с помощью разделителя ","
string[] coord= StrBlocks.Split(new char[]{ ',' }, System.StringSplitOptions.RemoveEmptyEntries);
//Далее присваиваем точке телепорта координаты
teleport = new Vector3(coord[0], coord[1], coord[2]);
и инстантим игрока в точке телепорта
Instantiate (Player, teleport, Quaternion.identity);
//удаляем строку PlayerPrefs
PlayerPrefs.DeleteKey("LoadTeleportPoint");
}
}
void Update()
{
LoadLvl();
}
//допустим при нажитии на кнопку "1" нужно загрузить вторую сцену, так что бы игрок телепортировался в точку Point2_1
void LoadLvl()
{
if (Input.GetKeyDown(KeyCode.Alpha1))
{//записываем координаты телепорта в строку
Pos = string.Format("{0},{1},{2}", Point2_1.x, Point2_1.y, Point2_1.z);
//сохраняем строку в PlayerPrefs
PlayerPrefs.SetString("LoadTeleportPoint", Pos);
}
//грузим вторую сцену и переходим в Start
Application.LoadLevel("Level2");//или можно было указать переменную, а далее переходим в функцию Start этого же скрипта (то есть выше)
}