Top.Mail.Ru
Ответы

Яндекс Игры Unity YG.Game

Помогите написать код сохранения на сервера Яндекса для Яндекс Игр.

Я не опытный в этом деле. Читал документацию и смотрел видео, там всё усложняют. Делал через нейросети и т. д.

У меня есть скрипт победы. Где если объект с тегом игрок попадает в триггер-зону, то его перекидывают на другую сцену. И так дальше.

Мне нужно, чтобы сцена сохранялась. Если игрок дошел до 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 пользуюсь первый раз

По дате
По Рейтингу
Аватар пользователя
Мудрец
7мес

1. **Установка Yandex Game SDK**: Убедитесь, что вы добавили Yandex Game SDK в свой проект. Обычно это включает в себя установку пакета и настройку необходимых конфигураций.

2. **Создание скрипта сохранения прогресса**: Убедитесь, что у вас есть отдельный скрипт для обработки сохранений. Давайте создадим простой скрипт `LevelManager`, который будет сохранять и загружать текущий уровень.

123456789101112131415161718192021222324252627282930313233343536
 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 Яндекс Игр. Обычно это делается в стартовом скрипте.

12345678910111213
 using UnityEngine; 
using YG; 
 
public class GameInitializer : MonoBehaviour 
{ 
    private void Awake() 
    { 
        if (!YandexGame.SDKEnabled) 
        { 
            YandexGame.Init(); 
        } 
    } 
} 

4. **Проверка работы**: Убедитесь, что вы протестировали игру в окружении Яндекс Игр, так как SDK может работать только в этом контексте.

Теперь у вас должно быть простое решение для сохранения и загрузки уровня, используя сервисы Яндекса. Если что-то не работает, убедитесь, что вы правильно настроили и инициализировали SDK Яндекс Игр в вашем проекте.