1. **Установка Yandex Game SDK**: Убедитесь, что вы добавили Yandex Game SDK в свой проект. Обычно это включает в себя установку пакета и настройку необходимых конфигураций.
2. **Создание скрипта сохранения прогресса**: Убедитесь, что у вас есть отдельный скрипт для обработки сохранений. Давайте создадим простой скрипт `LevelManager`, который будет сохранять и загружать текущий уровень.
using UnityEngine;
using YG; // Подключаем Yandex Game SDK
public class LevelManager : MonoBehaviour
{
private const string LevelKey = "currentLevel";
public void SaveCurrentLevel(int levelIndex)
{
// Сохранение уровня на сервере Яндекса
YandexGame.savesData.currentLevel = levelIndex;
YandexGame.SaveProgress();
Debug.Log("Уровень сохранен: " + levelIndex);
}
public int LoadCurrentLevel()
{
// Загрузка уровня с сервера Яндекса
if (YandexGame.SDKEnabled)
{
int savedLevel = YandexGame.savesData.currentLevel;
Debug.Log("Загруженный уровень: " + savedLevel);
return savedLevel;
}
// Если SDK не инициализировано, загружаем первый уровень
return 0;
}
private void Start()
{
// Пример загрузки уровня при старте игры
int levelToLoad = LoadCurrentLevel();
UnityEngine.SceneManagement.SceneManager.LoadScene(levelToLoad);
}
}
3. **Инициализация и проверка подключения**: Убедитесь, что ваш проект правильно инициализирует SDK Яндекс Игр. Обычно это делается в стартовом скрипте.
using UnityEngine;
using YG;
public class GameInitializer : MonoBehaviour
{
private void Awake()
{
if (!YandexGame.SDKEnabled)
{
YandexGame.Init();
}
}
}
4. **Проверка работы**: Убедитесь, что вы протестировали игру в окружении Яндекс Игр, так как SDK может работать только в этом контексте.
Теперь у вас должно быть простое решение для сохранения и загрузки уровня, используя сервисы Яндекса. Если что-то не работает, убедитесь, что вы правильно настроили и инициализировали SDK Яндекс Игр в вашем проекте.
Я не опытный в этом деле. Читал документацию и смотрел видео, там всё усложняют. Делал через нейросети и т. д.
У меня есть скрипт победы. Где если объект с тегом игрок попадает в триггер-зону, то его перекидывают на другую сцену. И так дальше.
Мне нужно, чтобы сцена сохранялась. Если игрок дошел до 2 сцены, то он потом и загрузится на вторую сцену.
Я пытался делать скрипты сохранения, но там ужас. Закончилось всё тем, что при запуске сцены в Unity у меня дублируется 1 сцена, и они обе начинают моргать и писать «не загружено».
Так что вот скрипт перехода на другую сцену, который я сделал(LevelManager там скрипт сохранения)
using JetBrains.Annotations;
using UnityEngine;
using UnityEngine.SceneManagement;
public class VictoryTrigger : MonoBehaviour
{
private LevelManager levelManager;
private void Start()
{
// Получаем ссылку на компонент LevelManager
levelManager = FindObjectOfType<LevelManager>();
}
void OnTriggerEnter(Collider other)
{
// Проверяем, что объект, вошедший в триггер, имеет тег "Player"
if (other.CompareTag("Player"))
{
// Выводим сообщение в консоль
Debug.Log("Победа!");
// Сохраняем текущий уровень перед переходом
int currentLevel = SceneManager.GetActiveScene().buildIndex;
// Здесь попытаемся сохранить текущий уровень
if (levelManager != null) // Добавлено: проверка на null
{
levelManager.SaveCurrentLevel(currentLevel);
}
else
{
Debug.LogError("LevelManager not found!");
}
// Загружаем следующую сцену
LoadNextScene();
}
}
void LoadNextScene()
{
// следующая сцена идет по порядку
int nextSceneIndex = SceneManager.GetActiveScene().buildIndex + 1;
// Проверяем, существует ли следующая сцена
if (nextSceneIndex < SceneManager.sceneCountInBuildSettings)
{
SceneManager.LoadScene(nextSceneIndex); // Переход к следующей сцене
}
else
{
Debug.Log("Это последняя сцена.");
SceneManager.LoadScene(0); // Загружаем первый уровень
}
}
}
Прошу не писать мне "читай документацию яндекса или смотри ролики". И к справке, я палагином YG пользуюсь первый раз