Сохранение прогресса игрока на сервере Яндекса

Поделиться
HTML-код
  • Опубликовано: 10 ноя 2024

Комментарии • 252

  • @АртемМещанинов-ж2р
    @АртемМещанинов-ж2р 7 месяцев назад +1

    Ребят была тут у кого-нибудь такая проблема - Яндекс не хочет сохранять и загружать данные. Всё сделано точно по инструкции и на платформе Яндекса игра запускается без ошибок. Только когда наступает момент сохранения ничего не происходит. Дальнейшие команды не выполняются (например после сохранения данных на Яндекс стоит метод перехода на новый уровень, но он уже не выполняется). При этом сама игра не фризится и продолжает работать.
    p.s. курс очень понравился, Илья - очень приятный лектор.

    • @yagamesdev
      @yagamesdev  7 месяцев назад

      Здравствуйте. Рады, что курс вам понравился. Чтобы помочь разобраться в вопросе, потребуется больше деталей. Пожалуйста, пришлите скриншоты консоли браузера и ссылку на игру через форму обратной связи: clck.ru/34nHbe

  • @PoolzaRu
    @PoolzaRu Год назад +10

    Спасибо за труд. Единственное нормальное видео на эту тему, которое мне удалось найти. Напишите в название Лидерборд, чтобы по этому запросу могли люди искать. Я случайно нашел эту тему потому что досмотрел до конца)

  • @user-zr7kz3ze2i
    @user-zr7kz3ze2i Год назад +57

    Если у вас возникает ошибка с LoadExtern:
    У меня появлялась ошибка в браузере о том, что getData не срабатывает. Это происходит из-за того, что когда авторизованный на Яндекс играх игрок впервые заходит в игру, ему отправляется запрос на авторизацию, даже если вы не используете метод auth(). Игра все равно запрашивает доступ к фото и имени, и пока игрок не даст к ним доступ, вы не получите и его ID, который нужен для работы метода getData. А так как игра уже запущена, LoadExtern срабатывает, натыкаясь на отсутствие Id игрока для отработки getData.
    В видеоуроке ошибки не возникает из-за того, что урок по авторизации был ранее, и ведущий уже дал согласие на доступ к фото, имени и соответственно к ID игрока. Но если новый пользователь зайдет, то ошибка появится.
    Решение:
    Если вам не нужны фото и имя игрока, а достаточно знать Id для сохранения прогресса на сервере Яндекса, то нужно просто использовать вот такой код в index html. (в уроке по авторизации видно куда его нужно вставить)
    var player;
    YaGames
    .init()
    .then(ysdk => {
    console.log('Yandex SDK initialized');
    window.ysdk = ysdk;
    initPlayer();
    });
    function initPlayer() {
    ysdk.getPlayer({ scopes: false }).then(_player => {
    player = _player;
    }).catch(err => {
    // Ошибка при инициализации объекта Player.
    });
    }
    Прошу Яндекс обратить внимание на ошибку, ведь если оставить свою игру с ошибкой, то модерация ее не пропустит.

    • @zidankohai
      @zidankohai Год назад +3

      блин спасибо. я второй день уже мучаюсь

    • @RottenBeetleGames
      @RottenBeetleGames Год назад +5

      коммент написан 2 месяца назад, а всё ещё полезен. Спасибо❤

    • @Александр-с6з5к
      @Александр-с6з5к Год назад

      Спасибо, помогло! Теперь у меня другая проблема: "Uncaught (in promise) ReferenceError: myGameInstance is not defined". Помогите пж, 2 сутки исправить не могу.
      Upd: Нашёл решение, я забыл этот код:
      var myGameInstance = null;
      script.onload = () => {
      createUnityInstance(canvas, config, (progress) => {...}).then((unityInstance) => {
      myGameInstance = unityInstance;

    • @GGamess
      @GGamess Год назад

      спасибо

    • @МаксимОрлов-н7э
      @МаксимОрлов-н7э Год назад

      бро, а куда этот скрипт писать?

  • @sanded9321
    @sanded9321 2 года назад +21

    Конструкция 29:00 :
    #if UNITY_WEBGL______ #endif
    в редакторе не будет работать, т.к. Unity при билде под WEBGL считает среду как WEBGL соответственно.
    При таких исходных можно использовать:
    #if !UNITY_EDITOR && UNITY_WEBGL______ #endif

    • @WhereIMP
      @WhereIMP Год назад

      Так он же вроде и сделал это для того, чтобы в редакторе не выполнялась и не вызывала ошибок, или я ошибаюсь?

    • @psi4042
      @psi4042 Год назад

      Спасибо, ответ который я искал!

  • @motick654_gamejolt5
    @motick654_gamejolt5 Год назад +18

    я: смотрю 42 минутный курс что бы понять, КАК ПРОСТО СОХРАНИТЬ ПЕРЕМЕННУЮ

    • @ravenempty3562
      @ravenempty3562 Год назад

      жиза

    • @geksan
      @geksan 10 месяцев назад

      bruh

    • @MariaEsenina
      @MariaEsenina 4 месяца назад +2

      Современные веб технологии... +API Яндекса без нормальной документации, +авторы контента объясняющие в стиле: вот это скопируем сюда, здесь преобразуем в строку, тут вызываем вот это и сохраняем на сервере xD. Так можно что угодно "объяснить" вообще. +Нелепая привязка к Unity - это вообще финиш.

    • @unknowname5872
      @unknowname5872 16 дней назад

      @@MariaEsenina всё так

  • @ravenempty3562
    @ravenempty3562 Год назад +8

    date и data - разные слова, если что)

  • @tomvegas4767
    @tomvegas4767 Год назад +1

    у всех у кого ошибка c getdata ,loadextern, советую вызвать метод loadextern в методе start а не awake как показано в видео , по идее ошибок не будет

    • @tomvegas4767
      @tomvegas4767 Год назад

      еще советую чтобы успешно пройти модерацию такой код в html,
      YaGames
      .init()
      .then(ysdk => {
      console.log('Yandex SDK initialized');
      window.ysdk = ysdk;
      auth();
      });
      var player;
      function auth(){
      ysdk.getPlayer().then(_player => {
      player = _player;
      }).catch(err => {
      // Ошибка при инициализации объекта Player.
      });
      }

  • @EmeraldForestCat
    @EmeraldForestCat Год назад +2

    В примечании к лидерборду указано что запрос можно отправлять не чаще чем раз секунду, а у игрока есть возможность нажать на кнопку покупки высоты чаще чем раз в секунду. Разве это не приведет к ошибке?

  • @1_Day_Ludoman
    @1_Day_Ludoman Год назад +6

    Кто знает как решить ошибку "player is not defined at Load Extem"?

    • @tiksten2707
      @tiksten2707 9 месяцев назад

      ВАЖНОЕ
      РЕШЕНИЕ ПРОБЛЕМЫ ДЛЯ ТЕХ У КОГО ОШИБКА СВЯЗАННАЯ С getData и LoadExtern
      У меня получилось сделать крайне простой костыль
      Берёте и просто пишете скрипт Kostyl, который ожидает нажатия любой клавиши от игрока
      После этого, Kostyl вызывает метод в Progress, который подгружает данные (тот самый LoadExtern и всё что вам там надо) и уничтожает себя
      И всё будет работать
      Ошибки не будет т к подгрузка данных будет осуществляться после того как игрок "доберётся" до игры, т е всё уже будет на своих местах и готово к работе
      Всё!

  • @АндрейАнлавович
    @АндрейАнлавович Год назад +5

    если игрок первый раз играет у него нет сохранений, то что тогда возвращает getData?

    • @MDVonlineStore
      @MDVonlineStore Год назад

      Просто вернет значение 0.

    • @АндрейАнлавович
      @АндрейАнлавович Год назад

      ​@@MDVonlineStore как я понял там просто возвращает пустой объект {}

    • @yagamesdev
      @yagamesdev  Год назад +1

      Здравствуйте. Если игрок играет первый раз и сохранения пока отсутствуют, метод getData не возвращает данные. При этом проект будет работать корректно.

  • @aleksey2793
    @aleksey2793 Год назад

    Архитектура проекта адовая конечно))

  • @ZeroCityGuard
    @ZeroCityGuard Месяц назад

    Подскажите, из за чего ошибки при билде проекта? Буду благодарен за ответ, по идее никаких ошибок в коде нет, пересмотрел несколько раз.
    Ошибка 1:
    Library\Bee\artifacts\WebGL\build\debug_WebGL_wasm\build.js: D:\Unitygames\GeometryParkour\Geometry Parkour\Assets\Yandex\Plugins\my.jslib: failure to execute js library "D:\Unitygames\GeometryParkour\Geometry Parkour\Assets\Yandex\Plugins\my.jslib":
    UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)
    Ошибка 2:
    Library\Bee\artifacts\WebGL\build\debug_WebGL_wasm\build.js: D:\Unitygames\GeometryParkour\Geometry Parkour\Assets\Yandex\Plugins\my.jslib: use -sVERBOSE to see more details
    UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)
    Ошибка 3:
    Building Library\Bee\artifacts\WebGL\build\debug_WebGL_wasm\build.js failed with output:
    error: D:\Unitygames\GeometryParkour\Geometry Parkour\Assets\Yandex\Plugins\my.jslib: failure to execute js library "D:\Unitygames\GeometryParkour\Geometry Parkour\Assets\Yandex\Plugins\my.jslib":
    error: D:\Unitygames\GeometryParkour\Geometry Parkour\Assets\Yandex\Plugins\my.jslib: use -sVERBOSE to see more details
    Internal compiler error in src/compiler.js!
    Please create a bug report at github.com/emscripten-core/emscripten/issues/
    with a log of the build and the input files used to run. Exception message: "D:\Unitygames\GeometryParkour\Geometry Parkour\Assets\Yandex\Plugins\my.preprocessed.jslib:50
    };
    ^
    SyntaxError: Unexpected token ';'
    at new Script (vm.js:88:7)
    at createScript (vm.js:263:10)
    at Object.runInThisContext (vm.js:311:10)
    at Object.load (D:\Unity\2023.2.14f1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten\src\modules.js:226:12)
    at runJSify (D:\Unity\2023.2.14f1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten\src\jsifier.js:95:18)
    at Object. (D:\Unity\2023.2.14f1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten\src\compiler.js:109:3)
    at Module._compile (internal/modules/cjs/loader.js:1138:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
    at Module.load (internal/modules/cjs/loader.js:986:32)
    at Function.Module._load (internal/modules/cjs/loader.js:879:14)
    emcc: error: 'D:/Unity/2023.2.14f1/Editor/Data/PlaybackEngines/WebGLSupport/BuildTools/Emscripten/node/node.exe D:\Unity\2023.2.14f1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten\src\compiler.js C:\Users\anjut\AppData\Local\Temp\tmpforkysh5.json --symbols-only' failed (returned 1)
    UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

    • @yagamesdev
      @yagamesdev  Месяц назад +1

      Здравствуйте. Уведомление «Unexpected token ';'» говорит о том, что в .jslib файле некорректный синтаксис на 50 строчке кода. Вероятно, на этой строке присутствует лишняя точка с запятой или неправильно оформленный код.

  • @PoolzaRu
    @PoolzaRu Год назад +6

    Слушай, сделай пожалуйста видео о том как вывести таблицу лидеров внутри игры. Потому что если в игре несколько уровней и на каждый из них нужна своя таблица, то кроме одной (главной) на странице игры мы увидеть не сможем.

  • @БимТВ-б7т
    @БимТВ-б7т Год назад +1

    Где будет показано то, что мы вписали в графу "отображаемое название лидерборда" ?

    • @yagamesdev
      @yagamesdev  Год назад

      Здравствуйте. Отображаемое название в каталоге автоматически определяется как «Лучшие игроки». Однако вы можете добавить таблицу рекордов в интерфейс игры с нужным наименованием.

  • @Shining_Starling-wb9vq
    @Shining_Starling-wb9vq 7 месяцев назад +1

    У кого-нибудь была такая проблема? Я писал в точно как в видео, но проблема с сохранением игры на сервер, вылазит ошибка(TypeError ..... “getData” _LoadExtern) и игра не запускается и зависает, я даже уже копировал скрипты те что в описании оставляют под видео и html менял то что было в подсказке под видео, но не помогло. В консоли есть ошибка, что объект Progress не найден, но красным не выделяется. Сам курс понравился, но эту ошибку не смог сам исправить.

    • @yagamesdev
      @yagamesdev  7 месяцев назад

      Здравствуйте. Такое уведомление отображается, если методы SDK срабатывают до завершения инициализации библиотеки. В этом случае нужно гарантировать порядок их вызовов или переписать места их использования. Подробнее пишем в Справке: clck.ru/3A4aCh

  • @ОлегКопылов-щ8е
    @ОлегКопылов-щ8е 2 года назад +5

    Здравствуйте! Очень полезные видео. Я работаю на движке Construct 3 и не имею знаний по какому либо языку программирования. Для Construct 3 есть готовый плагин Яндекс SDK . я его подключил , подключил рекламу , все работает ок. Возникла сложность с покупками а именно сохранение игровых данных на сервер. Очень прошу помочь в этом вопросе . как для разработчиков на Construct 3 через встроенный плагин SDK сохранять данные игрока на сервер Яндекса. Какие необходимо вызваться функции для сохранения и загрузки данных. Даже если вы подскажите самую малость это уже поможет мне двигаться быстрее с решением данного вопроса. Я не смог найти уроков по Яндекс SDK для Construct 3 .Любая помощь с Вашей стороны будет полезна .Спасибо!

    • @НикитаСтрельников-м1с
      @НикитаСтрельников-м1с Год назад

      Олег привет, получилось разобраться? Сможешь подсказать пожалуйста

    • @ОлегКопылов-щ8е
      @ОлегКопылов-щ8е Год назад

      @@НикитаСтрельников-м1с привет, пока что оставил этот вопрос , работаю только с рекламой без покупок.

    • @yagamesdev
      @yagamesdev  Год назад

      Олег, здравствуйте. Для сохранения прогресса игрока можно использовать систему облачных сохранений на наш сервер. Подробную инструкцию можно найти в Справке: clck.ru/34RosY

  • @Вася-ч3б5л
    @Вася-ч3б5л Год назад +1

    в информации "Версию проекта по итогам прошлого урока можно скачать здесь" нету кода с этого урока.

    • @yagamesdev
      @yagamesdev  Год назад

      Здравствуйте. Готовый код по результатам текущего урока можно найти в описании следующего видео по ссылке: clck.ru/34vRQp

  • @Blackjek80
    @Blackjek80 Месяц назад

    Здравствуйте а как сделать сохранение ещё и для не авторизованных пользователей? При том что для авторизованных пользователей сохранение сделано по вашему уроку. Заранее спасибо!

    • @yagamesdev
      @yagamesdev  Месяц назад

      Здравствуйте. Прогресс неавторизованных пользователей также можно сохранять с помощью методов player.setData/setStats и player.getData нашего SDK - они актуальны для всех игроков, вне зависимости от авторизации. Подробнее о них в справке: clck.ru/3DTSH4

    • @Blackjek80
      @Blackjek80 Месяц назад

      @@yagamesdev Чтобы неавторизованные пользователи также видели свои рекорды (отображать их на окне следующего уровня или при поражении), например, вы можете сохранять данные в локальном хранилище браузера localStorage, либо использовать облачные сохранение данных об установленном рекорде, например, методом player.setStats для сохранения числовых значений.
      Вот такой ответ пришел от службы поддержки Яндекса, я понял что player.setData не подходит

  • @ЛУКИТ
    @ЛУКИТ 8 месяцев назад +1

    @yagamesdev Вот такая ошибка вылазит после перезагрузки игры что делать не понятно
    Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'getData')
    Данные или не сохраняются или не могут взяться с яндекса

    • @ЛУКИТ
      @ЛУКИТ 8 месяцев назад +1

      И в оставленном файле нашел такую инструкцию о которой речи не шло что она значит?
      Это в скрипте Progresss
      private void Update()
      {
      if (Input.GetKeyDown(KeyCode.Backspace))
      {
      PlayerInfo = new PlayerInfo();
      Save();
      }
      }

    • @ЛУКИТ
      @ЛУКИТ 8 месяцев назад +1

      В режиме инкогнито ошибок нет, но и сохранения нету

    • @ЛУКИТ
      @ЛУКИТ 8 месяцев назад

      Почему то функция SendMessage(которая в jslib) не видит мой объект Progress (SendMessage: object Progress not found!)
      имена все совпадают Может проблема в том что он переноситься между уровнями через dontDestroy?

    • @ЛУКИТ
      @ЛУКИТ 8 месяцев назад

      Проблема решена ) Прикол был в том что после дублирования объекта Progress в иерархии юнити к названию была добавлена единица в скобочках и пробел перед ней Progress (1) И вот я скобки с единицей удалил а пробел остался. получилось что в иерархии название с пробелом ' Progress ' а запрос был на объект без пробела 'Progress'

  • @v1v3rna47
    @v1v3rna47 Месяц назад

    Там подписано до 200кб. Есть ли возможность как-то сохранять данные чуть больше (около 10мб на человека) или нужно подключать свой сервер?

    • @yagamesdev
      @yagamesdev  Месяц назад

      Здравствуйте. При работе с методом player.setData(data, flush) действительно есть ограничения в 200 КБ. При этом вы можете также использовать внешние хосты для хранения данных игрока. Отметим, что запросы к ним по умолчанию блокируются платформой. Но вы можете добавить нужные адреса в исключения. Для этого откройте консоль, вкладка «Настройки» - «Правила для CSP». В поле «Хосты» пропишите адреса в формате cdn.example.com. Они должны быть c фиксированным доменом и защищённым протоколом https или wss.
      В поле «Причина использования хостов» подробно опишите, для каких целей в игре отправляются запросы к сторонним адресам. Далее нажмите «Сохранить» - коллеги рассмотрят запрос. Можно использовать внешние хосты, которые уже разрешены на платформе. Полный список в этой статье: clck.ru/3DLkLn.

  • @БимТВ-б7т
    @БимТВ-б7т 11 месяцев назад

    Подскажите, в каком, уроке вы создавали скрипт progress?

    • @yagamesdev
      @yagamesdev  11 месяцев назад

      Здравствуйте. Скрипт «Progress» был создан в видео по ссылке: clck.ru/36mRcc

    • @БимТВ-б7т
      @БимТВ-б7т 11 месяцев назад

      @@yagamesdev спасибо

  • @F_LA_Y
    @F_LA_Y 10 месяцев назад

    Почему мне нужно подтверждать свои действия в яндекс играх,пишет чтото с jslib

  • @БимТВ-б7т
    @БимТВ-б7т Год назад +1

    В требованиях к играм есть пункт: Реализован гостевой вход или возможность использования без авторизации. Внутренний прогресс при этом должен сохраняться. Для этого playerprefs подойдёт?

    • @yagamesdev
      @yagamesdev  Год назад

      Здравствуйте. Сохранять внутриигровые данные можно с помощью методов объекта Player. Метод player.setData сохраняет прогресс на сервер. Максимальный размер данных - 200 KБ. Чтобы асинхронно возвращать внутриигровой прогресс пользователя, который записан в базе Яндекса, используйте player.getData. Численные данные можно получать через метод player.setStats. Чтобы проверить, удалось ли сохранить прогресс, используйте метод Promise. Подробнее рассказываем по ссылке: clck.ru/34aKsq

    • @БимТВ-б7т
      @БимТВ-б7т Год назад

      ​@@yagamesdev200 КБ на одного игрока?

  • @sanded9321
    @sanded9321 2 года назад +4

    Так и не понял почему часть кода пишется в jslib а часть в index html . С одной справки копируется, а на основании чего распределяется непонятно. Может ли автор как то подробнее разобрать эту связку c#____jslib____index.html. Какие зависимости и кто за что отвечает, почему так а не иначе.

    • @ЕвгенийБабиков-в4я
      @ЕвгенийБабиков-в4я Год назад +1

      В index html пишутся различные инициализирующие функции, которые выполняются при загрузке страницы и запуске игры. К ним нельзя получить доступ из скрипта C#. Лучше его не забивать лишним кодом, чтобы можно было потом и в других проектах спокойно использовать. А в jslib пишутся функции необходимые для данной конкретной игры, и только к ним можно получить доступ из скрипов на C#. И когда билд будет делаться с jslib точно ничего не произойдёт.

    • @ЕвгенийБабиков-в4я
      @ЕвгенийБабиков-в4я Год назад

      38:07 в функции записи в лидерборд можно было одну строку написать lb.setLeaderboardScore('Height', value); Переменная lb уже была получена в глобальной области index html 34:18

    • @ravenempty3562
      @ravenempty3562 Год назад

      Я сейчас на пути к изучению и вот какое на данный момент понимание:
      Если ты пишешь код, который не связан с джаваскриптом, а только с сишарпом, тогда пиши в сишарп скриптах.
      Если ты пишешь код, который не связан с сишарпом, а только с джаваскриптом, тогда пиши в индекс html
      Если ты пишешь код, где тебе нужно из сишарпа вызвать функцию джаваскрипт или из функции джаваскрипт получить какие-то данные из сишарп скриптов, тогда используй jslib, как прослойку для передачи этих данных. В jslib мы пишем функции на языке джаваскрипт, которые мы можем вызвать из сишарпа. В индекс html тоже есть функции на языке джаваскрипт, но их мы не можем вызвать из сишарпа, поэтому нам нужен jslib
      Знающие люди поправьте меня, если ошибаюсь

  • @sevavoldaev
    @sevavoldaev 2 месяца назад

    При первом обновлении страницы с игрой сохранения регистрируются и выводятся. Но уже при втором обновлении данные сбрасываются к дефолтным. С чем это может быть связано?

    • @yagamesdev
      @yagamesdev  2 месяца назад

      Здравствуйте. Вероятно, во время второго обновления страницы Unity перезаписывает данные на стандартные и сохраняет их на сервер. Необходимо внимательно проверить логику сохранений.

  • @ЦенительКино-к5и
    @ЦенительКино-к5и 10 месяцев назад

    Это конечно все хорошо, но как мне создать второй лидерборд и его увидеть вообще?Надо ли снова инициализировать другую переменную lb?Или там можно в одной все сделать

    • @yagamesdev
      @yagamesdev  10 месяцев назад

      Здравствуйте. Вы можете создать несколько таблиц рекордов внутри игры. При этом основной лидерборд, который отображается в описании проекта в каталоге, может быть только один.
      Если вы создаете и делаете основным новый лидерборд, в предыдущем опция автоматически отключится. Подробнее в Справке: clck.ru/37MrX4

  • @БимТВ-б7т
    @БимТВ-б7т 9 месяцев назад

    Из-за чего может возникать ошибка: TypeError: Cannot read properties of undefined (reading 'getData') at_LoadExtern ?

    • @yagamesdev
      @yagamesdev  9 месяцев назад

      Здравствуйте. Такое уведомление появляется, так как вызов «getData» происходит до того, как «Player» успевает инициализироваться. Необходимо гарантировать порядок вызовов. Подробнее по ссылке: clck.ru/35BEfW

  • @БимТВ-б7т
    @БимТВ-б7т 9 месяцев назад

    Можно ли в PlayerInfo 9:27 добавить Dictionary, чтобы потом его сохранить на сервере яндекса, или только простые типы данных?

    • @yagamesdev
      @yagamesdev  9 месяцев назад +1

      Здравствуйте. Да, вы можете использовать «Dictionary» в проекте. Дело в том, что в видеоуроках из курса мы реализовываем сохранение данных на сервер Яндекс Игр с помощью JSON. А он, в свою очередь, не поддерживает «Dictionary».

    • @bur-mq1mq
      @bur-mq1mq 9 месяцев назад

      @@yagamesdev а как сохранять объект Image например? Не понятно, или это только в кеш браузера?

  • @jasonnorton941
    @jasonnorton941 Год назад +1

    Здравствуйте, отличный курс, но я столкнулся с такой проблемой, мне нужно для кликера чтобы Яндекс запоминал купленные спрайты, для этого я сделал list со значениями, то есть если куплен спрайт то 1, если нет то 0, и вот эти значения у меня проверяются в магазине, но когда я пытаюсь работать с PlayerInfo в других скриптах, когда загружаю на яндекс и начинаю тестировать, в консоли выдаёт ошибку Index was out of range, я пытался эту проблему решить через костыли, то есть я сделал такой же массив только уже не в отдельном PlayerInfo а как он был изначально, когда работаю с ним то всё в порядке, я даже могу этому массиву передавать значения из PlayerInfo, но остаётся лишь проблема как запихать данные обратно в PlayerInfo, потому что я пробовал и через оператор FOR но в таком случае оно почему то вообще не работает, так что мне нужно какое то готовое решение как данные массива выгружать и загружать

    • @landar2570
      @landar2570 4 месяца назад

      У тебя получилось? у меня такаиже ошибка

    • @jasonnorton941
      @jasonnorton941 4 месяца назад

      @@landar2570 вместа list используй обычные массивы

  • @Windol27
    @Windol27 6 месяцев назад

    А что за my.jslib где этот файл находится?

    • @yagamesdev
      @yagamesdev  6 месяцев назад

      Здравствуйте. Рассказываем, как создать файл my.jslib, в одном из уроков курса. Посмотреть его можно по ссылке: clck.ru/3AUVUe

  • @kylind2862
    @kylind2862 Год назад

    Подскажите почему массивы сохраняются с нулевыми значениями.

  • @gfhdghesh
    @gfhdghesh Год назад

    А playerprefs не даст после обновлений возвращать прогресс?

  • @ГеоргийСафарян
    @ГеоргийСафарян Год назад

    Что делать если при нажатии на кнопку для перехода в следующий уровень он не переходит, в Unity пишет _Internal assembly: type: member:(null), а когда тестирую в яндексе следующий уровень не включается, если выйти в главное меню игры и нажать играть запускается нужный уровень, при перезагрузке страницы ничего не сохраняется

    • @yagamesdev
      @yagamesdev  Год назад

      Здравствуйте. Такое может происходить по многим причинам. Делимся возможными вариантами решений:
      1. Проверьте настройки кнопки перехода. Она должна вызывать нужную функцию или метод для загрузки следующего уровня. Убедитесь, что этапы в вашей игре доступны для загрузки.
      2. Просмотрите код, отвечающий за переход на следующий уровень. В нём должны использоваться корректные методы или функции для загрузки этапа, например, SceneManager.LoadScene().
      3. Проверьте консоль Unity на наличие уведомлений или предупреждений. Они могут указывать на причину, по которой не осуществляется переход на следующий уровень.

  • @gamedaver113
    @gamedaver113 2 года назад +2

    Можете объяснить такой момент. Что будет, если я запрошу сохранение игрока с сервера Яндекса, если он первый раз запустит игру?(сохранений там, очевидно, никаких нет)

    • @aramharutyunyan5681
      @aramharutyunyan5681 2 года назад +1

      лично у меня какая то странная ошибка выдаётся и игра ставится на паузу, даже кнопки не работают

    • @БогданЖиленко-ж6с
      @БогданЖиленко-ж6с 2 года назад +1

      @@aramharutyunyan5681 +

    • @aramharutyunyan5681
      @aramharutyunyan5681 2 года назад +1

      @@БогданЖиленко-ж6с Я разобралься со всем этим
      Если возникают проблемы с загрузкой данных, например всё идёт к нулю, то удалите DontDestroyOnLoad(gameobject) из скрипта, он у меня был виноват что данные не сохранялись
      если выдаёт очень странную ошибку которая состоит из непонятных символов значит что проблема в C# коде, лично у меня GetData() которая берёт имя и фото игрока запускалась в Awake() и из за этого выдавало ошибку, я сделал эту функцию через булеаны(если надо скину код) и нормально работает
      Дальше, старайтесь вызывать LoadExtern ранзше всех функций особенно SaveExtern, у меня было такое что я случайно вызывал SaveExtern до LoadExtern и данные при заходе на уровень менялись на 0, абаслютно все, я 2 дня над этим голову ломал

    • @aramharutyunyan5681
      @aramharutyunyan5681 2 года назад

      ах да, совсем забыл ребят
      Вопрос что будет если первый раз запустить игру и загрузить данные, то в моём случае нечего не происходило, всё нормально работает и нормально сохраняются и загружаются данные после всего этого

    • @channelErwave
      @channelErwave Год назад +1

      @@aramharutyunyan5681 Скинь код, пожалуйста

  • @mimax159
    @mimax159 Год назад +2

    У меня ошибка cs0106 на public, private.
    Я вообще не понимаю, как всё это можно можно понять. Дофига кодов надо писать, это всё ещё и запомнить, как то. Я игру сделал, но в этом моменте, я просто потерян, как и моё желание быть разработчиком. Это очень сложно

    • @kaileeann
      @kaileeann Год назад +2

      Бро, всё познается со временем. Попробуй получше освоиться сначала с самим языком C#, попробовать более простые программы, рано или поздно всё получится. Просто нужно очень много времени

    • @fedos_
      @fedos_ Год назад

      Бро как успехи на данный момент

  • @taliondocoto6686
    @taliondocoto6686 11 месяцев назад

    У меня ошибка "Cannot read properties of undefined (reading 'getData')".

    • @yagamesdev
      @yagamesdev  11 месяцев назад

      Здравствуйте. Такое уведомление появляется, так как вызов «getData» происходит до того, как «Player» успевает инициализироваться. Необходимо гарантировать порядок вызовов. Подробнее по ссылке: clck.ru/35BEfW

    • @taliondocoto6686
      @taliondocoto6686 11 месяцев назад +2

      @@yagamesdev да вы всем отвечаете так, кидаете что вы, что тех поддержка ссылку на эту страницу. Но мы делали по ней - это не работает. Не гарантирует ничего. Просто покажите как эту инструкцию применить к вашему проекту. Какой код и куда вставить. А то делаем по инструкции что вы скинули а все равно ошибка, только уже новые.

    • @taliondocoto6686
      @taliondocoto6686 11 месяцев назад

      @@yagamesdev и как это применить к данной ситуации? К данному проекту?

    • @tiksten2707
      @tiksten2707 9 месяцев назад

      ВАЖНОЕ
      РЕШЕНИЕ ПРОБЛЕМЫ ДЛЯ ТЕХ У КОГО ОШИБКА СВЯЗАННАЯ С getData и LoadExtern
      У меня получилось сделать крайне простой костыль
      Берёте и просто пишете скрипт Kostyl, который ожидает нажатия любой клавиши от игрока
      После этого, Kostyl вызывает метод в Progress, который подгружает данные (тот самый LoadExtern и всё что вам там надо) и уничтожает себя
      И всё будет работать
      Ошибки не будет т к подгрузка данных будет осуществляться после того как игрок "доберётся" до игры, т е всё уже будет на своих местах и готово к работе
      Всё!

  • @ИванСидоренко-в2т
    @ИванСидоренко-в2т 3 дня назад

    8:10 Начало разговора про сохранение прогресса

  • @БимТВ-б7т
    @БимТВ-б7т 9 месяцев назад

    Можно ли в JSON сохранить данные типа string?

    • @yagamesdev
      @yagamesdev  9 месяцев назад

      Здравствуйте. Да, «JSON» позволяет хранить любые типы данных, в том числе целые классы и массивы. В этом случае нужно использовать сереализацию и десериализацию. Подробнее можно почитать по ссылке: clck.ru/34gqqd

    • @БимТВ-б7т
      @БимТВ-б7т 9 месяцев назад

      Спасибо!@@yagamesdev

  • @landar2570
    @landar2570 4 месяца назад

    Здраствуйте у меня ошибка выдается DllNotFoundException: _Internal assembly: type: помогите пожалуйста. И за этого база данных не сохраняется помогите

    • @yagamesdev
      @yagamesdev  4 месяца назад

      Добрый день. Подобное уведомление преобладает в Android билдах Unity, в Web встречается редко. Необходимо проверить правильность реализации SDK логики проекта. Если это не поможет, рекомендуем удалить папку «Library» и создать чистый билд - «Clean build»

  • @landar2570
    @landar2570 4 месяца назад

    У меня ошибка typeerror cannot read properties of undefined (reading 'SendMessage') помогите

    • @yagamesdev
      @yagamesdev  4 месяца назад

      Здравствуйте. Такое уведомление может возникать, если «SendMessage» не был объявлен и остаётся пустым, но при этом происходит попытка считать его данные.

  • @sergeyromanov1920
    @sergeyromanov1920 Год назад +3

    Урок пройден, все реализовал.

  • @Kostyan_Sigaev
    @Kostyan_Sigaev Год назад +2

    Делал всё как сказаноЮ думал что это легкотня, а в итоге при сборке игры получаю в консоли одну ошибку, ссылающуюся на:
    ================================
    {
    wr.requestInstances[request].timeout = timeout;
    }
    function _LoadExtern() {
    player.getData().then(_date => {
    ^
    ================================
    Ломаю голову уже 3 дня, решить никак не могу...

    • @PoolzaRu
      @PoolzaRu Год назад

      Попробуй обновиться до 2022 версии

    • @Мирпофактам
      @Мирпофактам Год назад +1

      привет у меня такая же ошибка

    • @Мирпофактам
      @Мирпофактам Год назад +1

      не нашли случайно решение?

    • @PoolzaRu
      @PoolzaRu Год назад

      @@Мирпофактам обновил Юнити?

    • @Вася-ч3б5л
      @Вася-ч3б5л Год назад

      не нашли решение? я вот сижу и не как не могу понять причину

  • @БимТВ-б7т
    @БимТВ-б7т 8 месяцев назад

    Что делать, если не всегда успевают подгрузиться данные с сервера?

    • @yagamesdev
      @yagamesdev  7 месяцев назад

      Здравствуйте. В таком случае нужно создать искусственную задержку до того момента, пока не загрузятся необходимые данные. В Unity, например, это можно сделать с использованием корутин. Подробнее по ссылке: clck.ru/39ZV92

  • @landar2570
    @landar2570 4 месяца назад

    У меня не работает LoadExtern но тоесть он должен вызывать SetPlayerInfo но он не вызывается я всё перепроверил правильно при этом в яндекс ошибок не выдает я не знаю как исправить

    • @yagamesdev
      @yagamesdev  4 месяца назад

      Здравствуйте. Рекомендуем проверить реализацию кода согласно видео.
      Если не получится восстановить работу LoadExtern, можно воспользоваться плагином «PluginYG». Он поможет исключить возможные сценарии при работе с SDK. Документация плагина доступна по ссылке: clck.ru/3Bk46k.

    • @landar2570
      @landar2570 4 месяца назад

      @@yagamesdev я уже исправил но выдаёт ошибку другую 351450 typeError cannot read properties of null (reading Send Message) at_gimeplayer. Хотя все хорошо все как по учебнику и я не знаю почему это

  • @sedmoy_
    @sedmoy_ 11 месяцев назад

    TypeError: Cannot read properties of undefined (reading 'getData')
    Первый запуск прошёл после исправления index по советам комментаторов. Второй запуск выдаёт ошибку(выше), проверял на пк и телефоне. У автора нет такой ошибки хотя он тоже хранит инты, почему у меня ругается на тип данных. Кто сталкивался?

    • @yagamesdev
      @yagamesdev  11 месяцев назад +1

      Здравствуйте. Такое уведомление может отображаться, когда методы SDK, например, GetData, срабатывают до инициализации библиотеки или объекта Player. Необходимо гарантировать порядок вызовов - прописать условие для каждого объекта. Например, если SDK инициализирован, запрашивается инициализация Player. Если Player инициализирован, срабатывает вызов методов работы с данными игрока. Подробнее в Руководстве разработчика: clck.ru/35BEfW

    • @ДенисКоругин
      @ДенисКоругин 11 месяцев назад

      Смог решить проблему?

    • @tomvegas4767
      @tomvegas4767 9 месяцев назад

      В jslibe надо коечто поменять

    • @tomvegas4767
      @tomvegas4767 9 месяцев назад

      Если запустить игру в режиме инкогнито в браузере вылазит эта ошибка

    • @ABelov-xy5is
      @ABelov-xy5is 9 месяцев назад +1

      @@tomvegas4767 Не подскажешь, что нужно поменять в jslib чтобы эта ошибка исчезла?

  • @igd1591
    @igd1591 Год назад

    Будет ли урок про хранение данных в Yandex-Cloud?

    • @yagamesdev
      @yagamesdev  Год назад

      Здравствуйте. Все актуальные уроки опубликовали на нашем RUclips-канале. Если появятся новые, расскажем об этом в новостях по ссылке: clck.ru/359uep

    • @igd1591
      @igd1591 Год назад

      @@yagamesdev здравстуйте, может быть где-то есть текстовое описание, как сделать сохрание в клауд?

  • @litllepaul488
    @litllepaul488 Год назад

    а как сохранить то что человек уже авторизовался в игре, а то при перезагрузке нужно каждый раз нажимать на кнопку чтобы залогиниться

    • @yagamesdev
      @yagamesdev  Год назад

      Здравствуйте. Вы можете проверить на старте игры или перед вызовом окна авторизации, совершил ли пользователь вход в аккаунт. Для этого используется метод Player - player.getMode(). Он возвращает строку lite в случае, если игрок не авторизован в Яндексе. Подробнее в Руководстве разработчика: clck.ru/35HuSQ

  • @ShoreTrooperLive
    @ShoreTrooperLive 16 дней назад

    ReferenceError: unityInstance is not defined Кто знает как решить?

    • @yagamesdev
      @yagamesdev  15 дней назад

      Здравствуйте. Уведомление «is not defined» может отображаться, если методы SDK срабатывают до завершения инициализации библиотеки. В этом случае нужно гарантировать порядок их вызовов. Подробнее в Руководстве разработчика: clck.ru/3EDjeF.

  • @sergeisergei7736
    @sergeisergei7736 9 месяцев назад

    Кто-нибудь может в итоге скинуть полный html код, чтобы и аватарка и имя игрока выводилось, и чтобы сохранения были. А то ошибки вылазиют. Уже несколько дней застрял тут.

    • @yagamesdev
      @yagamesdev  9 месяцев назад

      Здравствуйте. Версию файла index.html можно скачать в описании к следующему уроку. Делимся ссылкой: clck.ru/38feoZ

    • @sergeisergei7736
      @sergeisergei7736 9 месяцев назад +1

      @@yagamesdev Не работает. Возникает ошибка с LoadExtern. Я поменял на тот код, который вы рекомендуете в описании и все равно не работает. Я вызывал этот LoadExtern из Start, потом из Awake, из других методов. Все равно не работает. Я вывел ради теста сохраняемые переменные на экран, они не изменяются вообще. С PlayePrefs проблем вообще никаких.

  • @jasonnorton941
    @jasonnorton941 Год назад

    Та же проблема что и у людей ниже, если нету сохранений или разрешений изначально то дальше загрузки не пускает, ругается "player is not defined at _LoadExtern"

    • @yagamesdev
      @yagamesdev  Год назад

      Здравствуйте. Чтобы решить этот вопрос, необходимо инициализировать объект Player на старте игры. Он позволяет проверить авторизацию игрока и наличие его сохранений на сервере. Инструкция в Справке: clck.ru/3559yV

    • @mmilamix
      @mmilamix Год назад

      такая же ошибка, все сделано правильно - не понимаю как исправить

    • @Nonpuma
      @Nonpuma Год назад

      @@mmilamix А в итоге как вы исправили данную проблему?

    • @ЦенительКино-к5и
      @ЦенительКино-к5и Год назад +2

      @@yagamesdev Никак потому что когда заходит новый игрок то Яндекс каким то образом инициализирует игрока только после того как он нажмет кнопку играть, а до этого всегда идут функции Awake и Start в которых LoadExtern вызывается и происходит ошибка, хз как исправить

    • @taliondocoto6686
      @taliondocoto6686 11 месяцев назад

      @@yagamesdev и как и где сделать эту инициализацию?

  • @gamerovn5229
    @gamerovn5229 Год назад

    UTF8toString is not defined при сохранении, что делать?

    • @yagamesdev
      @yagamesdev  Год назад

      Здравствуйте. Уведомление «UTF8toString is not defined» может появляться, если установлена другая версия Unity. Рекомендуем создавать проект по нашему курсу в версии 2022.1.12f1, либо изменить в коде UTF8ToString() на pointer_stringify().

  • @landar2570
    @landar2570 4 месяца назад

    Здраствуйте когда я пытаюсь тип PlayerInfo преобразовать в строку у меня ошибку выдает у меня в PlayherInfo помимо даных int есть float и list такде по мимо public есть и public static а все спасибо нашел ошибку а так хороший гайд

    • @yagamesdev
      @yagamesdev  4 месяца назад

      Здравствуйте. Рады, что вам удалось разобраться и что видео-урок понравился 🙂

  • @user-kc3dm1gq9d
    @user-kc3dm1gq9d Год назад

    Подскажите пожалуйста как сохранить время входа игрока в игру))

    • @yagamesdev
      @yagamesdev  Год назад

      Добрый день. Если проект добавлен в каталог через архив в консоли разработчика, то сохранять дату и время не получится. Получать время входа пользователя в игру можно с сервера, на который она загружена.

  • @nekto2436
    @nekto2436 Год назад +1

    Кто знает почему в браузере появляется ошибка DllNotFoundException: Unable to load "_Internal" ?

    • @sh_games8780
      @sh_games8780 Год назад +2

      не знаю, актуально ли, но ты не доставил _ перед Internal. Правильно "__Internal"

    • @nekto2436
      @nekto2436 Год назад

      @@sh_games8780 Здравствуйте, спасибо за ответ. Проверил, но проблема не в этом. Жалко что без сохранений яндекс отказывается принимать игры. А то у меня вся игра готово полностью только с сохранением данных ступор полный.

    • @sh_games8780
      @sh_games8780 Год назад +1

      @@nekto2436 тогда ещё как вариант - нужно проверить название методов в Jslib и c#, может где-то опечаталась и они отличаются.
      И в файле Jslib проверить, правильно ли прописали обращение в myGameInstance

    • @nekto2436
      @nekto2436 Год назад +1

      @@sh_games8780 Спасибо, проверю :)

    • @ВиталийЧумаченко-с2л
      @ВиталийЧумаченко-с2л Год назад +1

      @@nekto2436 Попробуйте версию Unity 2021 и выше, желательно стабильную. Я сначала делал на 2020, вообще не компилировалось.

  • @несмотринаменятак
    @несмотринаменятак 5 месяцев назад

    У меня ошибка "DLLNotFoundException"

    • @yagamesdev
      @yagamesdev  5 месяцев назад

      Здравствуйте. Такое уведомление может возникать, если в my.jslib была допущена неточность. Отметим, что под видео можно скачать уже готовый my.jslib и сравнить с вашим, чтобы выявить недочёт.
      Дополнительно рекомендуем убедиться, что версия Unity не младше 2022 года и проверить, чтобы в коде с C# не было уведомлений с «[DllImport("__Internal")]».
      Если рекомендации не принесут желаемого результата, пришлите нам подробности в личные сообщения в Telegram: t.me/YandexGamesSupport. Всё проверим и подскажем.

    • @несмотринаменятак
      @несмотринаменятак 5 месяцев назад

      @@yagamesdev а есть способ проще сохранить только прогресс уровня? чтоб игрок начинал с того уровня, на котором остановился

    • @yagamesdev
      @yagamesdev  5 месяцев назад

      Добрый день. Можно использовать PlayerPrefs.SetInt("CurrentLevel", Номер уровня) для сохранения. После этого при запуске игры брать переменную и загружать нужный уровень. Подробнее в Документации по ссылке: clck.ru/3Aqphx.

  • @Veyron104
    @Veyron104 Год назад

    Не могу понять как добавлять инфу в "не главные" лидерборды и как её загружать с сервера, не могу понять толи у меня топ пустой и не заполняется, толи он не считывается

    • @YandexADV
      @YandexADV Год назад

      Дмитрий, здравствуйте. Чтобы добавить информацию в «не главный» лидерборд, его нужно сделать основным.

    • @Veyron104
      @Veyron104 Год назад

      @@YandexADV фсмысли? Проблема в чём: есть 2 борды, по максимальному уровню и по кол-ву ходов на каком-то уровне, я закидывал всё как надо и вторая борда не обновлялась. Проблема была в том была, что у ЯИ задержка между запросами секунду и второй запрос просто не обрабатывался

  • @Oe2k0
    @Oe2k0 Год назад

    у кого нибудь возникала проблема, что сохранения работают только в одной сессии?

    • @yagamesdev
      @yagamesdev  Год назад

      Здравствуйте. Чтобы сохранять и возвращать прогресс игрока в новых сессиях, необходимо запрашивать через SDK данные пользователя на запуске игры. Сделать это можно с помощью метода player.getData(keys). Подробнее в Руководстве разработчика: clck.ru/35HCop

    • @Oe2k0
      @Oe2k0 Год назад

      @@yagamesdevувы, делал все как в вашем гайде

    • @Miketo_Sanso
      @Miketo_Sanso 3 месяца назад

      @@Oe2k0 Аналогичная фигня. Сижу, думаю, в чём дело...

  • @matsharikru7562
    @matsharikru7562 Год назад +2

    32:44 Лидерборд

  • @alexanderivanov899
    @alexanderivanov899 Год назад

    А в констракет 3 как это делать?

  • @deniz_dezigner
    @deniz_dezigner 4 месяца назад

    Почти 2 года прошло, а с LoadExtern всё еще проблемы

    • @yagamesdev
      @yagamesdev  4 месяца назад

      Здравствуйте. Рекомендуем вместо awake вызывать метод loadextern в методе start.
      Также необходимо убедиться, что методы вызываются в правильной последовательности и в первую очередь срабатывает инициализация.

  • @avalonex2971
    @avalonex2971 Год назад

    Мб если у кого то возникнет проблема что в консоли будет писаться не найден объект прогресс. то просто пересоздайте его в сцене.мне помогло

  • @cherepyiiika
    @cherepyiiika Год назад +27

    Роман Сакутин приди, порядок в коде наведи!!!

    • @Just_Be280
      @Just_Be280 10 месяцев назад

      Порчу наводишь?

    • @TOSHIKGAME
      @TOSHIKGAME 10 месяцев назад +1

      Для примеров,очень даже подойдёт код,работоспособный.ну а если нужен идеальный код,то причём Рома Сакутин😂.

    • @glebanisimov7401
      @glebanisimov7401 6 месяцев назад +3

      Главный инфоцыган в геймдеве

    • @1FireKnight1
      @1FireKnight1 5 месяцев назад

      Мантру зачитал

  • @goldencat567
    @goldencat567 Год назад

    А это работает на версии 2021?

    • @yagamesdev
      @yagamesdev  Год назад

      Здравствуйте. Сохранение прогресса через библиотеку SDK Яндекс Игр актуально для любой версии Unity. Документацию с методами сохранения данных можно посмотреть в Руководстве разработчика: clck.ru/34RosY

    • @goldencat567
      @goldencat567 Год назад +1

      @@yagamesdev ок

  • @allelf5107
    @allelf5107 Год назад

    Здравствуйте! А если делать игру не под яндекс игры, а все то же будет отправляться на собственный сервер и получать информацию по ссылке, Всё работает аналогично или что то нужно поменять?

    • @yagamesdev
      @yagamesdev  Год назад

      Добрый день. Для сохранения данных и прогресса игрока используются методы SDK Яндекс Игр. Поэтому информация в видеоролике применима только для проектов, которые публикуются на нашей платформе.

  • @Вася-ч3б5л
    @Вася-ч3б5л Год назад

    этот код не работает и документация в которой не возможно разобраться не программисту на JS

    • @yagamesdev
      @yagamesdev  Год назад

      Здравствуйте. Если возникли вопросы по интеграции SDK, задать их можно через форму обратной связи: clck.ru/332j6S

  • @OkMiracle
    @OkMiracle Год назад +1

    Файл загружен, файл проверяется, Файл загружен, файл проверяется, Файл загружен, файл проверяется

    • @yagamesdev
      @yagamesdev  Год назад

      Здравствуйте. Давайте всё детально проверим. Если загрузить архив в консоль разработчика не удалось, напишите нам, пожалуйста, через форму обратной связи по ссылке: clck.ru/34nHbe

  • @HUNTER-lp5hy
    @HUNTER-lp5hy 2 года назад

    А как префсы на сервак сохранять?

    • @vitaliySobakinson
      @vitaliySobakinson Год назад

      Префаб это текстовй документ. Меш объектов, содержащий префаб, его материалы и т.д. хранятся в самой игре. Сериализуйте ваши префабы по id

    • @Isselsan
      @Isselsan Год назад +1

      @@vitaliySobakinson знаю что тоже позднее на 4 месяца ответил и это как закономерность уже, но человек выше спрашивал не про "префабы", а про "префсы". Префсы - это PlayerPrefs(почти то же самое, что мы делали с помощью PlayerInfo). Так вот, в префсы обычно сохраняют настройки музыки, чувствительности мыши и т.д., вот человек и спросил за это.

  • @sergeisergei7736
    @sergeisergei7736 8 месяцев назад

    Видео бесполезное, потому что вылезает такая ошибка Cannot read properties of undefined (reading 'getData'). Автор видео так и не ответил как решить проблему.

    • @yagamesdev
      @yagamesdev  8 месяцев назад

      Здравствуйте. Такое уведомление появляется, если методы работы с данными игрока вызываются до инициализации SDK или объекта Player. Необходимо гарантировать порядок вызовов, например, через условие then. Инструкция в Руководстве разработчика: clck.ru/3958u8

  • @_alex_and_lions_8958
    @_alex_and_lions_8958 2 года назад

    Не компилируется. Что делать?

    • @_alex_and_lions_8958
      @_alex_and_lions_8958 2 года назад

      @@coyotewld Ну стоит не писать хуйню. И понять что человек в видео договорил все не до конца. Хотя бы упомянуть что код который видео не будет работать на всех версиях юнити а только на 2022

    • @avalonex2971
      @avalonex2971 Год назад

      решил?

    • @_alex_and_lions_8958
      @_alex_and_lions_8958 Год назад

      @@avalonex2971 ну как
      Я по другому делаю

  • @F_LA_Y
    @F_LA_Y 10 месяцев назад

    syntaxerror unexpected end of json input at json.parse ( anonymous ) ошибка в браузере.В коде jslib все правилнто

    • @yagamesdev
      @yagamesdev  9 месяцев назад

      Здравствуйте. Такое уведомление появляется из-за пустой строки или массива. Для решения можно использовать «Try Catch». Подробнее по ссылке: clck.ru/38QaJV

  • @dezstslkerq7159
    @dezstslkerq7159 Год назад

    syntaxerror unexpected end of json input at json.parse ( anonymous ) в браузере при попытке сохранения выбивает ошибку не пойму что не так

    • @yagamesdev
      @yagamesdev  Год назад

      Здравствуйте. Обычно такое уведомление возникает, если в файле JSON присутствует синтаксическое несоответствие. Например, если пропущены или добавлены лишние знаки. Рекомендуем внимательно просмотреть сохранение в файле JSON и дополнительно проверить, что формат кода соответствует описанному в видео. Отметим, что рассмотреть корректность знаков также можно с помощью JSON Linter или JSON Validator.

  • @Водопадик-ж1ф
    @Водопадик-ж1ф 5 месяцев назад

    Ребятки, у кого возникает Syntax error, ну или ещё какие-то ошибки, пропишите при создании публичного поля класса PLayerInfo вотэто:
    public PLayerInfo PlayerInfo = new PlayerInfo();

    • @Водопадик-ж1ф
      @Водопадик-ж1ф 5 месяцев назад

      Просто у меня эта ошибка возникла и я очень долго не понимал в чём проблема

  • @okewhy5873
    @okewhy5873 Год назад +1

    public void SetPlayerInfo(string value)
    {
    PlayerInfo = JsonUtility.FromJson(value);
    _playerInfoText.text = PlayerInfo.Level;
    }
    Такой код, думаю все реализовал как в его коде ,нужно только сохранение прогресса, но выдает ошибку
    Ошибка CS0029 Не удается неявно преобразовать тип "int" в "string".
    в его коде такого не было, просто преобразавать или я что-то пропустил?

    • @DELLOON
      @DELLOON Год назад

      _playerInfoText.text = PlayerInfo.Level.ToString();

    • @yagamesdev
      @yagamesdev  Год назад

      Здравствуйте. При вызове метода передавать данные в int нужно в формате string. Конвертировать данные можно, если изменить последнюю строку на следующее:
      _playerInfoText.text = PlayerInfo.Level.ToString();
      Либо можно добавить отдельные строки:
      int a = 0;
      SetPlayerInfo(a.ToString())

  • @Windol27
    @Windol27 6 месяцев назад

    как решить ошибку в unity: Building Library\Bee\artifacts\WebGL\build\debug_WebGL_wasm\build.js failed with output:
    error: undefined symbol: FullAdShow (referenced by top-level compiled C/C++ code)
    warning: Link with `-s LLD_REPORT_UNDEFINED` to get more information on undefined symbols
    warning: To disable errors for undefined symbols use `-s ERROR_ON_UNDEFINED_SYMBOLS=0`
    warning: _FullAdShow may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
    error: undefined symbol: GetLeaderboardScores (referenced by top-level compiled C/C++ code)
    warning: _GetLeaderboardScores may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
    error: undefined symbol: InitGame_js (referenced by top-level compiled C/C++ code)
    warning: _InitGame_js may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
    error: undefined symbol: InitLeaderboard (referenced by top-level compiled C/C++ code)
    warning: _InitLeaderboard may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
    error: undefined symbol: LoadExtern (referenced by top-level compiled C/C++ code)
    warning: _LoadExtern may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
    error: undefined symbol: OpenURL (referenced by top-level compiled C/C++ code)
    warning: _OpenURL may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
    error: undefined symbol: PromptShowInternal (referenced by top-level compiled C/C++ code)

    • @yagamesdev
      @yagamesdev  6 месяцев назад

      Здравствуйте. Для решения вопроса рекомендуем:
      1. Удалить папку Library в проекте.
      2. Проверить, чтобы плагины соответствовали используемой версии Unity.
      Отметим, что на движке версии 2020 не работают плагины 2021+ и наоборот. В курсе используется Unity 2022.

  • @fedos_
    @fedos_ Год назад

    Помогите у меня возникла ошибка Cannot read properties of undefined (reading 'getData')

    • @yagamesdev
      @yagamesdev  Год назад

      Здравствуйте. Такое уведомление может появляться, если до вызова метода сохранения и получения данных игрока не совершается инициализация объекта Player. Инструкцию по её настройке можно найти в Руководстве разработчика: clck.ru/34yKrr
      Также рекомендуем проверить, что черновик запускается в режиме ракеты. Режим черепахи нужен для тестирования игры и эмуляции ошибок, поэтому некоторые методы в нём могут работать некорректно. Если такое происходит только в режиме черепахи - это не должно повлиять на результаты модерации. Подробнее рассказываем по ссылке: clck.ru/34yKvJ

    • @fedos_
      @fedos_ Год назад

      @@yagamesdev Здравствуйте, Я совершил инициализацию объекта Player, но нечего не поменялось. Также вылезает ошибка Cannot read properties of undefined (reading "getData")
      Хотя с телефона и с другова компьютера все работает и данные сохраняются. Я отправил игру на модерацию, и мне отклонили игру по поводу того, что В авторизованной зоне отображается ошибка при первом запуске игры

    • @ghostbead7070
      @ghostbead7070 Год назад

      Здравствуй, решил проблему?@@fedos_

    • @fedos_
      @fedos_ 11 месяцев назад

      @@ДенисКоругин Конечно смог

    • @tiksten2707
      @tiksten2707 9 месяцев назад

      ВАЖНОЕ
      РЕШЕНИЕ ПРОБЛЕМЫ ДЛЯ ТЕХ У КОГО ОШИБКА СВЯЗАННАЯ С getData и LoadExtern
      У меня получилось сделать крайне простой костыль
      Берёте и просто пишете скрипт Kostyl, который ожидает нажатия любой клавиши от игрока
      После этого, Kostyl вызывает метод в Progress, который подгружает данные (тот самый LoadExtern и всё что вам там надо) и уничтожает себя
      И всё будет работать
      Ошибки не будет т к подгрузка данных будет осуществляться после того как игрок "доберётся" до игры, т е всё уже будет на своих местах и готово к работе
      Всё!