Для передачи аргументов между сценами в Unity обычно используют несколько подходов, например, глобальные переменные, Singleton-объекты, статические классы или даже передача информации через PlayerPrefs. Чтобы передать номер уровня из одной части сцены в другую в рамках той же сцены, можно использовать один из следующих методов:
1. **Использование Singleton или статического класса:**
Создайте статический класс `GameManager` или использование паттерна Singleton для хранения информации, общей для всего приложения.
Пример статического класса:
```csharp
public static class GameManager
{
public static int LevelNumber { get; set; }
}
```
Перед вызовом сцены уровней можно установить значение:
```csharp
GameManager.LevelNumber = desiredLevelNumber;
```
А в сцене уровней обращаться к значению так:
```csharp
int levelNumber = GameManager.LevelNumber;
```
2. **Использование PlayerPrefs:**
Если данные, которые вы хотите передать, простые и нет необходимости сохранять их между сессиями, то можно использовать `PlayerPrefs`.
Запись:
```csharp
PlayerPrefs.SetInt("LevelNumber", desiredLevelNumber);
```
Чтение:
```csharp
int levelNumber = PlayerPrefs.GetInt("LevelNumber");
```
3. **Использование компонентов сцены:**
Можно также разместить компонент (или скрипт) на объекте в сцене, который не уничтожается при загрузке новой сцены (`DontDestroyOnLoad`), и сохранять там нужные данные.
4. **Объекты-передатчики:**
Создайте в сцене объект с компонентом, который будет хранить необходимую информацию, после чего обращайтесь к этому компоненту из других частей сцены для получения данных.
Имейте в виду, что Unity рассматривает все сравнительно статическое содержимое как часть одной большой сцены, если вы используете одну и ту же сцену для всего. В этом случае, вам просто нужно искать способы обмена данными между компонентами и объектами в рамках этой единственной сцены, а не загружать отдельную сцену, как в классическом понимании этого процесса.