Найти в Дзене

Разработка под Smart TV на Unity

Использовалась версия Unity 2021.3.8 Информация для разработчиков HTML5 игр для платформы Я.Игры и аналогичных на игровом движке Unity с использованием WebGL. В случае разработки под Я.Игры у вас в игре должно подгружаться SDK Я.Игр. Как это сделать написано здесь https://yandex.ru/dev/games/doc/dg/sdk/sdk-about.html Считывание нажатий кнопок пульта. Ключевой и очень важный момент - Unity перехватывает события нажатий стрелок пульта ТВ, поэтому использовать конструкции вида window.addEventListener в javascript с последующей их передачей в Unity не получится. Вместо этого для перехвата нажатий можно использовать методы самого Unity. Например, так: void Update() { //Если хоть какая-то кнопка нажата и платформа ТВ if (Input.anyKeyDown && проверка, что платформа = ТВ) { if (Input.GetKeyDown(код нужной кнопки)) { //вызываемая по нажатию кнопки функция; } } } Коды кнопок пульта Код считывания всех нажимаемых кнопок - возможно кому-то пригодится. В свойствах класса: private readonly Array
Оглавление

Использовалась версия Unity 2021.3.8

Информация для разработчиков HTML5 игр для платформы Я.Игры и аналогичных на игровом движке Unity с использованием WebGL.

В случае разработки под Я.Игры у вас в игре должно подгружаться SDK Я.Игр. Как это сделать написано здесь https://yandex.ru/dev/games/doc/dg/sdk/sdk-about.html

Считывание нажатий кнопок пульта.

Ключевой и очень важный момент - Unity перехватывает события нажатий стрелок пульта ТВ, поэтому использовать конструкции вида window.addEventListener в javascript с последующей их передачей в Unity не получится.

Вместо этого для перехвата нажатий можно использовать методы самого Unity. Например, так:

void Update()
{
//Если хоть какая-то кнопка нажата и платформа ТВ
if (Input.anyKeyDown && проверка, что платформа = ТВ)
{
if (Input.GetKeyDown(код нужной кнопки))
{
//вызываемая по нажатию кнопки функция;
}
}
}

Коды кнопок пульта

  1. стрелка вправо KeyCode.Joystick1Button15
  2. стрелка влево KeyCode.Joystick1Button14
  3. стрелка вверх KeyCode.Joystick1Button12
  4. стрелка вниз KeyCode.Joystick1Button13
  5. кнопка ОК KeyCode.Return

Код считывания всех нажимаемых кнопок - возможно кому-то пригодится.

В свойствах класса:

private readonly Array keyCodes = Enum.GetValues(typeof(KeyCode));

В Update:

foreach (KeyCode keyCode in keyCodes)
{
if (Input.GetKey(keyCode))
{
Debug.Log("Unity KeyCode down: " + keyCode);
break;
}
}

Метод не оптимизирован - использовать только для тестов.

При разработке использовался Input Manager (Old)

Определение факта запуска на ТВ в javascript на АПИ Я.Игры.

-2

Инициализация АПИ яндекс.игр

function initSDK() {
let opt = { screen: { fullscreen:true, orientation: { value: "landscape", lock: true}} };
YaGames
.init(opt)
.then(_ysdk => {
ysdk=_ysdk;
//инициализация лидербордов.
ysdk.getLeaderboards().then(_lb => lb = _lb);
//вызов функции установки устройства
setDevice(ysdk.deviceInfo.type);
});
}

Функция установки устройства на основе данных АПИ

function setDevice(device) {
console.log("setDevice "+device);
switch (device) {
case "mobile":
мобильный
break;
case "tv":
ТВ.
//Добавляем событие считывания нажатия кнопки Back
ysdk.onEvent(ysdk.EVENTS.HISTORY_BACK, () => {
SendToUnity("OnKeyDown", "Back");
});
break;
default:
ПК
break;
}
}

Отправка событий javascript в Unity

-3

У меня функция js выглядит вот так:

function SendToUnity(method, msg) {
inst.SendMessage('[NetworkSocial]', method, msg);
}

Я использую Package unity-webview. Но учтите, что в большинстве случаев он избыточен, т.к. заточен под отображение html-страниц внутри (поверх) Unity и взаимодействие с ними.

Описанное выше использовалось для портирования простых викторин по ссылке https://yandex.ru/games/developer?name=VICTORYNCAt

Например, игры Угадай Мультфильм https://yandex.ru/games/app/183422

Угадай Мультфильм https://yandex.ru/games/app/183422
Угадай Мультфильм https://yandex.ru/games/app/183422

Про звуки на SmartTV есть здесь ссылка.