Переход между локациями в Unity2d

У меня игра вида Top-down. Допустим, чтобы перейти с одной локации на другую, я могу использовать зону с коллайдером, в которой прибавляю уровень и загружаю новую сцену. А как например сделать такие зоны перехода, чтобы можно было вернуться обратно? По идее же к каждой зоне должна быть привязана локация в которую она отправляет? Как хранить это всё?

Первая часть кода с триггером:

private void OnTriggerEnter2D(Collider2D collision)
{
    Levels.Instance.NextLevel();
}

Вторая с переходом:

public void NextLevel()
{   
    if (currentLevel < _maxLevels)
    {
        currentLevel += 1;
        SceneManager.LoadScene(currentLevel.ToString());
    }
    else
    {
        SceneManager.LoadScene("0");
    }
}

Ответы (1 шт):

Автор решения: Yaroslav

Нужны две вещи:

  • Указатель на локацию: id, ключ, прямая ссылка, что угодно по чему можно найти нужную локацию куда происходит переход.
  • Указатель на точку перехода. Поскольку у локаций несколько входов/выходов, нужен индекс или ключ по которому можно понять, где нужно будет заспавнить персонажа.

Из этого следует, что у локации есть список точек переходов, а у переходов коллайдер выхода, точка входа для спавна перед коллайдером. Инфо о том, куда ведёт переход можно прописать в самой точке перехода, либо в отдельном месте список пар-локация/точка, что бы локации не ссылались друг на друга и не имели зависимостей и не было противоречия. Не прописывать, с возможностью ошибки типа в локации/точке прописано А/2 -> B/1, а в B/1 -> C/3, а просто список двунаправленных пар: А/2-B/1, C/3-B/2.

→ Ссылка