большое спасибо за видео. Но тут по моему одни и те же грабли раз за разом. пишет ошибку что не определен ysdk для функции GetLang. То есть уже третье видео. где вызов функции идет до инициализации ysdk как я понимаю. Может есть смысл как то переделать ? добавить нужную информацию А кто каждый раз человек делает и влетает в одну и ту же ошибку. За видео все равно спасибо:)
Здравствуйте. Дело в том, что мы изменили ожидания по инициализации SDK. Видео было выпущено до этого момента. Сейчас нужно контролировать порядок вызовов. Подробнее в Руководстве разработчика по ссылке: clck.ru/3B7D6P.
Здравствуйте, подскажите пожалуста, информация с данного ролика еще актуальна? Сделал все индентично как в ролике только добавил еще турецкий как было сказано через else if , но смена языка не работает, не могу найти в чем может быть прицина
Здравствуйте. Для автоматического определения языка пользователя в игре рекомендуем использовать структуру i18n и параметр lang. В таком случае локализация игры будет выбираться в зависимости от домена, на котором она была запущена. Подробнее по ссылке: clck.ru/ZaEJh
Здравствуйте, делал игру по вашим урокам, никаких ошибок не было, но когда начал билдить итоговую версию, юнити выдает ошибки и не делает билд, вот одна из ошибок:UnityEditor.BuildPlayerWindow+BuildMethodException: 4 errors at UnityEditor.BuildPlayerWindow+DefaultBuildMethods.BuildPlayer (UnityEditor.BuildPlayerOptions options) [0x002cc] in :0 at UnityEditor.BuildPlayerWindow.CallBuildMethods (System.Boolean askForBuildLocation, UnityEditor.BuildOptions defaultBuildOptions) [0x00080] in :0 UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) в чем может быть проблема?
Здравствуйте. Если появляется уведомление «ysdk is not defined at _GetLang», это означает, что инициализация SDK происходит после запроса языка. В этом случае необходимо гарантировать корректный порядок вызовов. Для этого рекомендуем прописывать проверку на инициализацию SDK перед запросом языка. Подробнее в Справке: clck.ru/344GKf.
Здравствуйте. В этом случае нужно создать массив слов для каждой локализации на соответствующем языке и выбирать массив в зависимости от языка интерфейса пользователя. Определять его можно через SDK Яндекс Игр, структура i18n. Подробнее в Справке: clck.ru/34sPP5 Далее нужно переключать локализацию с помощью конструкции if - else или switch - case.
@eccentricgames Благодарю за урок! Подскажи пожалуйста, у меня выпадает ошибка(в браузере) - cannot read properties of undefined (reading 'lang') На что обратить внимание?
@@litrendshop1117 Если при создания билда выскакивает то проверь jslib,с синтаксисом могут быть проблемы(запитые везде поставил?) если просто в Юнити то забей, плей мод в юнити не передает тебе информацию о языке, так что все верно.
Александр, здравствуйте. Чтобы гарантировать корректный порядок вызовов, рекомендуем прописывать проверку на инициализацию SDK перед запросом языка. Подробнее в Справке: clck.ru/344GKf
@@yagamesdev А как это применить к данному коду из этого видео ? отдельное видео не нужно. Просто напишите как и что куда дописать нужно для получения языка. Там в примере только про рекламу ( к паре слов добавить еще пару слов и работает) , а в этом видео 4 строчки кода , совсем не понятно как это сделать
Подскажите, кто сталкивался. Загрузил приложение на Яндекс.игры, появилась ссылка на черновик, но при переходе по ссылке ошибка 404, Такой игры или страницы нет на сервисе. Прошло уже 5 дней, но ошибка не пропадает.
Здравствуйте. Выберите в черновике «Поддерживаемые платформы» и в поле «Игра переведена на...» установите параметр «Да». Тогда игра должна корректно открыться в каталоге. Если не поможет, пришлите, пожалуйста, ссылку на черновик нам через форму обратной связи, всё проверим: clck.ru/332j6S
Спасибо за урок. Очень подробно и информативно. Только постоянно ошибка ReferenceError: ysdk is not defined. А если ставить задержку как в документации описано, то сцена загружается быстрее, чем яндекс сдк и текст пустой постоянно. Есть ли другой способ, например загрузить яндекс сдк, до основной загрузки страницы?
Здравствуйте. Рады, что наши уроки помогают вам в создании игр. Если SDK Яндекс Игр инициализируется позже проекта, то можно использовать Try Catch, чтобы запуск прошёл корректно. Делимся примером: GetLang: function () { try { var lang = ysdk.environment.i18n.lang; var bufferSize = lengthBytesUTF8(lang) + 1; var buffer = _malloc(bufferSize); stringToUTF8(lang, buffer, bufferSize); return buffer; } catch(err){ // взять язык с браузера return navigator.language; } },
@@yagamesdev ваш метод работает, но криво, всегда когда не получается язык подгрузить загружается английский, в итоге почти всегда на всех браузерах английская версия игры((( Раздражает, почему на оф канале яндекса выходят такие уроки полные багов, если делаешь работу делай её хорошо либо вообще не делай, почти в каждом уроке критические баги, жесть....
Здравствуйте. Добавлять переключение языка по кнопке необязательно. Рекомендуем определять локализацию пользователя автоматически с помощью i18n.lang. Подробнее в Руководстве разработчика: clck.ru/3Aex64.
Здравствуйте. Чтобы во всём разобраться, понадобятся подробности. Пожалуйста, пришлите нам ссылку на игру, а также скриншоты или видео сценария в личные сообщения Telegram: t.me/YandexGamesSupport. Будем разбираться.
@@yagamesdev Большое Спасибо! Я делал как в этом примере, но как я понял он уже не актуален, все намного проще Может кому то пригодится в jslib нужно написать так, (myGameInstance.SendMessage("Languege", "LangChange", lang); это обращение к методу в C# которому и надо передать lang)) GetLang: function () { var lang = ysdk.environment.i18n.lang; myGameInstance.SendMessage("Languege", "LangChange", lang); }, и в index.html нужно еще myGameInstance.SendMessage подключить, var myGameInstance = null;// вот это var script = document.createElement("script"); script.src = loaderUrl; script.onload = () => { createUnityInstance(canvas, config, (progress) => { document.querySelector("#unity-progress-bar-full").style.width = 100 * progress + "%"; }).then((unityInstance) => { myGameInstance = unityInstance;// и еще вот это document.querySelector("#unity-loading-bar").style.display = "none"; // document.querySelector("#unity-fullscreen-button").onclick = () => { // unityInstance.SetFullscreen(1); // }; }).catch((message) => { alert(message); }); };
Здравствуйте. Создать файл .jslib можно в проекте Unity. Для этого в окне «Project» добавьте папку с названием Plugins. Внутри неё нужно создать файл в формате .jslib. Вносить в него изменения можно в любом текстовом редакторе. Также про создание файла .jslib рассказываем в другом видео курса: clck.ru/33gH9Q
Добрый день. Если в браузере ставить язык русский, то игра хорошо работает, а если браузер перевести на английский, то игра запускается с ошибками. Почему такое может быть?
Здравствуйте. Вероятно, уведомление «Failed» появляется из-за некорректного файла jslib. Пожалуйста, проверьте его повторно. Встроенные методы Unity могут не совсем верно работать в Web приложениях. Поэтому рекомендуем использовать методы нашего SDK.
что-то у меня ошибка при клике "GO", которая вообщем-то переведена как "Поехали", язык определился, а при клике - алерт про какой-то null пишет незнай где (ничего особо приметного нету в сообщении, хоть оно во всю страницу), уже больше часа не получилось найти, может я где накосячил, жаль было бы курс бросить, до конца не дойдя какую-то малость.
фух, починил, правда не очень ясно что же именно глючило. Возможно от того, что был достигнут макс. лвл, который был записан в яндекс, и при попытки начать новую игру - просто не находил сцену, но заработало только когда я пробовал вывести уровень в консоль до и после загрузки сцены в скрипте StartMenu . Go int sceneToGo = Progress.Instance.playerInfo.Level + 1; if (sceneToGo >= SceneManager.sceneCountInBuildSettings) sceneToGo = 1; Debug.Log("sceneToGo = " + sceneToGo); SceneManager.LoadScene(sceneToGo); Debug.Log("after load scene");
@@roiz5204 Здравствуйте. Такое может происходить, если вызываемый метод срабатывает до окончания инициализации SDK Яндекс Игр. Можно добавить задержку перед вызовом метода с помощью корутин в Unity. Или реализовать дополнительную проверку на инициализацию SDK. Инструкция в Руководстве разработчика: clck.ru/344GKf
Можете подсказать пожалуйсто? Почему у меня не работает русский язык вообще? даже если просто писать какой то текст на нём, всё перерыл не где не нашёл решения проблемы
@@yagamesdev В канвас добавляю текст мешь про, и в тексте пишу на русском языке, а там просто какие то квадраты за место текста и в кансоль выводится ошибка какая то, английский язык работает
Здравствуйте. Подробно рассказали, как настроить локализацию в ролике. Рекомендуем посмотреть его по ссылке: clck.ru/37uSpp Также вы можете использовать язык из системы. Подробнее в документации Unity: clck.ru/37uSu5
Здравствуйте. Sticky-баннер можно настроить в консоли разработчика. Подробнее рассказываем в Справке: clck.ru/33nTjR Для корректной работы баннера нужно зарегистрироваться в РСЯ и полностью заполнить черновик. Инструкция по подключению монетизации по ссылке: clck.ru/343PX3
Проблема с Яндексом в Юнити нормально выводятся и русский и английский в Яндекс английский тоже выводится, но вот русский почему то проподает например есть кнопка Play, в Юнити при русском написано Играть, но в Яндексе Кнкопка пустует, текст вообще не отображается, что делать?
@@fungimal 2021.3.4f1 Проблему эту я решил, огромное спасибо одному человеку, дал мне сайт с шрифтами которые используют кириллицу, ы поставил шрифты и сработало)
Было бы круто если бы этот же разработчик рассказал о лидербордах
Здравствуйте. О настройке лидерборда и сохранении результатов рассказываем в другом видеоролике курса по ссылке: clck.ru/35y5mt
У Unity уже некоторое время есть свой пакет для локализации, почему бы его не использовать? Понятно, что он сложнее, но и функционал у него богаче.
ДЛя Яндекс игр это нужно
Прикольно, но (особенно) в яндекс браузере работает с ошибками. При обновлении страницы не создается ysdk и перевод не работает.
Здравствуйте. Чтобы детальнее разобраться в вопросе, пожалуйста, пришлите ссылку на игру в личные сообщения t.me/YandexGamesSupport - подскажем.
большое спасибо за видео.
Но тут по моему одни и те же грабли раз за разом.
пишет ошибку что не определен ysdk для функции GetLang.
То есть уже третье видео. где вызов функции идет до инициализации ysdk как я понимаю.
Может есть смысл как то переделать ? добавить нужную информацию
А кто каждый раз человек делает и влетает в одну и ту же ошибку.
За видео все равно спасибо:)
Здравствуйте. Дело в том, что мы изменили ожидания по инициализации SDK. Видео было выпущено до этого момента. Сейчас нужно контролировать порядок вызовов. Подробнее в Руководстве разработчика по ссылке: clck.ru/3B7D6P.
@@yagamesdev спасибо.
а может какие то пометки в видео сделать? или с этим долго заморачиваться ?
@@yagamesdevДобрый день. Нельзя ли помочь с примером как убрать эту ошибку? У меня самого не получается этого сделать, учитывая информацию по ссылке.
Здравствуйте, подскажите пожалуста, информация с данного ролика еще актуальна? Сделал все индентично как в ролике только добавил еще турецкий как было сказано через else if , но смена языка не работает, не могу найти в чем может быть прицина
Здравствуйте. Для автоматического определения языка пользователя в игре рекомендуем использовать структуру i18n и параметр lang. В таком случае локализация игры будет выбираться в зависимости от домена, на котором она была запущена. Подробнее по ссылке: clck.ru/ZaEJh
Здравствуйте, делал игру по вашим урокам, никаких ошибок не было, но когда начал билдить итоговую версию, юнити выдает ошибки и не делает билд, вот одна из ошибок:UnityEditor.BuildPlayerWindow+BuildMethodException: 4 errors
at UnityEditor.BuildPlayerWindow+DefaultBuildMethods.BuildPlayer (UnityEditor.BuildPlayerOptions options) [0x002cc] in :0
at UnityEditor.BuildPlayerWindow.CallBuildMethods (System.Boolean askForBuildLocation, UnityEditor.BuildOptions defaultBuildOptions) [0x00080] in :0
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) в чем может быть проблема?
Кто-нибудь решил эту проблему с Get lang и инициализации sdk? Напишите нормальный, рабочий пример. Спасибо
Здравствуйте. Если появляется уведомление «ysdk is not defined at _GetLang», это означает, что инициализация SDK происходит после запроса языка. В этом случае необходимо гарантировать корректный порядок вызовов. Для этого рекомендуем прописывать проверку на инициализацию SDK перед запросом языка. Подробнее в Справке: clck.ru/344GKf.
Привет! Сделайте пожалуйста по Defold! 🙏
Здравствуйте. Подумаем над тем, чтобы сделать отдельные видео по Defold. Спасибо за идею 🙂
А как сделать это, если слова записанны в массив?Магический шар с рандомной генерацией слов из массива
Здравствуйте. В этом случае нужно создать массив слов для каждой локализации на соответствующем языке и выбирать массив в зависимости от языка интерфейса пользователя. Определять его можно через SDK Яндекс Игр, структура i18n. Подробнее в Справке: clck.ru/34sPP5
Далее нужно переключать локализацию с помощью конструкции if - else или switch - case.
@eccentricgames Благодарю за урок! Подскажи пожалуйста, у меня выпадает ошибка(в браузере) - cannot read properties of undefined (reading 'lang')
На что обратить внимание?
Здравствуйте. Рекомендуем проверить реализацию SDK Яндекс Игр в коде. Инструкции собраны в Руководстве разработчика: clck.ru/357hQz
У меня ошибка "ReferenceError: ysdk is not defined" при обращении к GetLang, хотя сдк подключена и инитится раньше вызова.
У меня тоже самое, как решили проблему?
@@litrendshop1117 Если при создания билда выскакивает то проверь jslib,с синтаксисом могут быть проблемы(запитые везде поставил?) если просто в Юнити то забей, плей мод в юнити не передает тебе информацию о языке, так что все верно.
@@LEVON007100 Спасибо за ответ, да я потом разобрался, была ошибка в коде jslib, нижнее подчеркивание не поставил)
@@litrendshop1117 До сих пор такая ошибка, то без нее грузится, то опять появляется, что именно ты правил? Я брал код с видео
У меня ровно эта жа проблема. Как я понимаю запрос языка бывает происходит до инициализации в index.html. как исправить?
Как победить нюанс, что инициализация SDK в Index.html может произвойти уже после запроса языка?
Александр, здравствуйте. Чтобы гарантировать корректный порядок вызовов, рекомендуем прописывать проверку на инициализацию SDK перед запросом языка. Подробнее в Справке: clck.ru/344GKf
@@yagamesdev А как это применить к данному коду из этого видео ? отдельное видео не нужно. Просто напишите как и что куда дописать нужно для получения языка. Там в примере только про рекламу ( к паре слов добавить еще пару слов и работает) , а в этом видео 4 строчки кода , совсем не понятно как это сделать
Привет,удалось решить проблему?@@yhnzxc
Подскажите, кто сталкивался.
Загрузил приложение на Яндекс.игры, появилась ссылка на черновик, но при переходе по ссылке ошибка 404, Такой игры или страницы нет на сервисе.
Прошло уже 5 дней, но ошибка не пропадает.
Здравствуйте. Выберите в черновике «Поддерживаемые платформы» и в поле «Игра переведена на...» установите параметр «Да». Тогда игра должна корректно открыться в каталоге. Если не поможет, пришлите, пожалуйста, ссылку на черновик нам через форму обратной связи, всё проверим: clck.ru/332j6S
была такая фигня, оказалось нужно просто почистить кэш браузера
Спасибо за урок. Очень подробно и информативно. Только постоянно ошибка ReferenceError: ysdk is not defined. А если ставить задержку как в документации описано, то сцена загружается быстрее, чем яндекс сдк и текст пустой постоянно. Есть ли другой способ, например загрузить яндекс сдк, до основной загрузки страницы?
Здравствуйте. Рады, что наши уроки помогают вам в создании игр. Если SDK Яндекс Игр инициализируется позже проекта, то можно использовать Try Catch, чтобы запуск прошёл корректно. Делимся примером:
GetLang: function () {
try {
var lang = ysdk.environment.i18n.lang;
var bufferSize = lengthBytesUTF8(lang) + 1;
var buffer = _malloc(bufferSize);
stringToUTF8(lang, buffer, bufferSize);
return buffer;
} catch(err){
// взять язык с браузера
return navigator.language;
}
},
@@yagamesdev ваш метод работает, но криво, всегда когда не получается язык подгрузить загружается английский, в итоге почти всегда на всех браузерах английская версия игры((( Раздражает, почему на оф канале яндекса выходят такие уроки полные багов, если делаешь работу делай её хорошо либо вообще не делай, почти в каждом уроке критические баги, жесть....
да. английский подгружает по-умолчанию. о прохождении модерации можно забыть)@@Евгений-ы2л9т
А в игре обязательно должна быть кнопка для смены языка? Или чтобы пройти модерацию, достаточно чтобы язык автоматически определялся?
Здравствуйте. Добавлять переключение языка по кнопке необязательно. Рекомендуем определять локализацию пользователя автоматически с помощью i18n.lang. Подробнее в Руководстве разработчика: clck.ru/3Aex64.
@@yagamesdev Здравствуйте.
А если будет только кнопка смены языка? Точнее дропдаун.
Привет! У меня этот код вызывает зависание, висит на уровни Логотипа загрузки Юнити, и дальше 90% не загружается
Здравствуйте. Чтобы во всём разобраться, понадобятся подробности. Пожалуйста, пришлите нам ссылку на игру, а также скриншоты или видео сценария в личные сообщения Telegram: t.me/YandexGamesSupport. Будем разбираться.
@@yagamesdev Большое Спасибо! Я делал как в этом примере, но как я понял он уже не актуален, все намного проще
Может кому то пригодится в jslib нужно написать так, (myGameInstance.SendMessage("Languege", "LangChange", lang); это обращение к методу в C# которому и надо передать lang))
GetLang: function () {
var lang = ysdk.environment.i18n.lang;
myGameInstance.SendMessage("Languege", "LangChange", lang);
},
и в index.html нужно еще myGameInstance.SendMessage подключить,
var myGameInstance = null;// вот это
var script = document.createElement("script");
script.src = loaderUrl;
script.onload = () => {
createUnityInstance(canvas, config, (progress) => {
document.querySelector("#unity-progress-bar-full").style.width = 100 * progress + "%";
}).then((unityInstance) => {
myGameInstance = unityInstance;// и еще вот это
document.querySelector("#unity-loading-bar").style.display = "none";
// document.querySelector("#unity-fullscreen-button").onclick = () => {
// unityInstance.SetFullscreen(1);
// };
}).catch((message) => {
alert(message);
});
};
Здравствуйте, а где найти файл my.jslib?
Здравствуйте. Создать файл .jslib можно в проекте Unity. Для этого в окне «Project» добавьте папку с названием Plugins. Внутри неё нужно создать файл в формате .jslib. Вносить в него изменения можно в любом текстовом редакторе.
Также про создание файла .jslib рассказываем в другом видео курса: clck.ru/33gH9Q
Добрый день. Если в браузере ставить язык русский, то игра хорошо работает, а если браузер перевести на английский, то игра запускается с ошибками. Почему такое может быть?
Здравствуйте. Уточните, пожалуйста, какие уведомления отображаются в проекте или консоли браузера?
Спасибо. Уже разобрался.@@yagamesdev
Не работает. При сборке ответ "Failed" и все. Почему просто нельзя использовать встроенные методы Unity?
Он не может прочитать файл jslib. Можно ли как то подробней об этом файле?
Здравствуйте. Вероятно, уведомление «Failed» появляется из-за некорректного файла jslib. Пожалуйста, проверьте его повторно.
Встроенные методы Unity могут не совсем верно работать в Web приложениях. Поэтому рекомендуем использовать методы нашего SDK.
что-то у меня ошибка при клике "GO", которая вообщем-то переведена как "Поехали", язык определился, а при клике - алерт про какой-то null пишет незнай где (ничего особо приметного нету в сообщении, хоть оно во всю страницу), уже больше часа не получилось найти, может я где накосячил, жаль было бы курс бросить, до конца не дойдя какую-то малость.
фух, починил, правда не очень ясно что же именно глючило. Возможно от того, что был достигнут макс. лвл, который был записан в яндекс, и при попытки начать новую игру - просто не находил сцену, но заработало только когда я пробовал вывести уровень в консоль до и после загрузки сцены в скрипте StartMenu . Go
int sceneToGo = Progress.Instance.playerInfo.Level + 1;
if (sceneToGo >= SceneManager.sceneCountInBuildSettings)
sceneToGo = 1;
Debug.Log("sceneToGo = " + sceneToGo);
SceneManager.LoadScene(sceneToGo);
Debug.Log("after load scene");
@@sergeyromanov1920 таже самая проблема. Не понимаю, как решить
@@roiz5204 Здравствуйте. Такое может происходить, если вызываемый метод срабатывает до окончания инициализации SDK Яндекс Игр. Можно добавить задержку перед вызовом метода с помощью корутин в Unity. Или реализовать дополнительную проверку на инициализацию SDK. Инструкция в Руководстве разработчика: clck.ru/344GKf
Можете подсказать пожалуйсто? Почему у меня не работает русский язык вообще? даже если просто писать какой то текст на нём, всё перерыл не где не нашёл решения проблемы
Добрый день. Расскажите, пожалуйста, более подробно о том, с чем вы столкнулись. Что подразумевается под тем, что русский язык не работает?
@@yagamesdev В канвас добавляю текст мешь про, и в тексте пишу на русском языке, а там просто какие то квадраты за место текста и в кансоль выводится ошибка какая то, английский язык работает
эта инструкция не рабочая, модерацию не пройдете.
Поподробнее пожалуйста :)
Привет. А как сделать , чтоб Level переводился на русский?
Здравствуйте. Подробно рассказали, как настроить локализацию в ролике. Рекомендуем посмотреть его по ссылке: clck.ru/37uSpp
Также вы можете использовать язык из системы. Подробнее в документации Unity: clck.ru/37uSu5
снимите пж ролик как подключить стики баннер
Здравствуйте. Sticky-баннер можно настроить в консоли разработчика. Подробнее рассказываем в Справке: clck.ru/33nTjR
Для корректной работы баннера нужно зарегистрироваться в РСЯ и полностью заполнить черновик. Инструкция по подключению монетизации по ссылке: clck.ru/343PX3
Проблема с Яндексом
в Юнити нормально выводятся и русский и английский
в Яндекс английский тоже выводится, но вот русский почему то проподает
например есть кнопка Play, в Юнити при русском написано Играть, но в Яндексе Кнкопка пустует, текст вообще не отображается, что делать?
проблема решена, спасибо другим разработчикам, я просто поменял шрифт на тот который поддержывает кирилицу
@@aramharutyunyan5681 А вы какую версию юнити для этого курса используете?
@@fungimal 2021.3.4f1
Проблему эту я решил, огромное спасибо одному человеку, дал мне сайт с шрифтами которые используют кириллицу, ы поставил шрифты и сработало)
Вы используете text из legacy. Для него нужны шрифты. Если использовать как в примерах TextmeshPro то такой проблемы не будет.
где найти файл .jslib?
Здравствуйте. О создании файла .jslib рассказываем в другом видеоролике курса по ссылке: clck.ru/33gH9Q
М... да нагородил, что без стакана не разберёшься, лазить по документациям, а в чём смысл тогда вашего видео?
Чтобы научить тебя разрабатывать не только по видео, а самостоятельно, используя документацию, может быть???