Найти в Дзене
Евгений Камалов

Как подключить Game Ready Api без плагина PluginYG на Unity

Требования к игре на платформе Яндекс игры, постоянно меняются. Теперь им нужен еще один метод, ysdk.features.LoadingAPI.ready(). Его нужно вызывать, когда игра загрузила все ресурсы и готова к взаимодействию с пользователем. Для начала у вас должно быть готово в игре хотя бы главное меню, если конечно по задумке игры оно вообще должно быть. У меня просто в игре "Помоги коту Грею" есть главное меню, поэтому метод вызова Game Ready Api, я сделал на этой сцене. Итак по традиции создаем пустышку с именем Help, в которой создаем пустышку с именем GameReadyApi. И на эту пустышку кидаем скрипт GameReadyApi.cs using System.Collections; using System.Collections.Generic; using System.Runtime.InteropServices; using UnityEngine; public class GameReadyApi : MonoBehaviour { #if UNITY_WEBGL [DllImport("__Internal")] private static extern void LoadingAPIReady(); [DllImport("__Internal")] private static extern void GameplayAPIStart(); [DllImport("__Internal")] private static extern void GameplayAPIS

Требования к игре на платформе Яндекс игры, постоянно меняются. Теперь им нужен еще один метод, ysdk.features.LoadingAPI.ready(). Его нужно вызывать, когда игра загрузила все ресурсы и готова к взаимодействию с пользователем.

Для начала у вас должно быть готово в игре хотя бы главное меню, если конечно по задумке игры оно вообще должно быть. У меня просто в игре "Помоги коту Грею" есть главное меню, поэтому метод вызова Game Ready Api, я сделал на этой сцене.

Итак по традиции создаем пустышку с именем Help, в которой создаем пустышку с именем GameReadyApi. И на эту пустышку кидаем скрипт GameReadyApi.cs

Создаем пустышку с именем Help, в которой создаем пустышку с именем GameReadyApi.
Создаем пустышку с именем Help, в которой создаем пустышку с именем GameReadyApi.

-2

using System.Collections;

using System.Collections.Generic;

using System.Runtime.InteropServices;

using UnityEngine;

public class GameReadyApi : MonoBehaviour

{

#if UNITY_WEBGL

[DllImport("__Internal")]

private static extern void LoadingAPIReady();

[DllImport("__Internal")]

private static extern void GameplayAPIStart();

[DllImport("__Internal")]

private static extern void GameplayAPIStop();

#endif

public void OnLoadingAPIReady()

{

LoadingAPIReady();

}

public void OnGameplayAPIStart()

{

GameplayAPIStart();

}

public void OnGameplayAPIStop()

{

GameplayAPIStop();

}

}

Теперь этот скрипт можно будет вызывать из других скриптов, где нам нужно будет обращаться к GameReadyApi. Я сделал запуск метода LoadingAPI.ready(), в скрипте MainMenu.cs, в котором помимо этого метода, есть еще и другие методы, а именно настройка громкости звуков и перевод текстов в игре. Эти методы я вырежу, чтобы вас они не отвлекали от главной темы. Если кому нужен полный код скрипта MainMenu.cs, пишите в комментарии, с радостью поделюсь.

На пустышку Help кидаем скрипт MainMenu.cs.

На пустышку Help кидаем скрипт MainMenu.cs.
На пустышку Help кидаем скрипт MainMenu.cs.
-4

public class MainMenu : MonoBehaviour

{

public GameReadyApi m_GameReadyApi; // Ссылка на скрипт GameReadyApi.cs

private void Start()

{

#if UNITY_WEBGL

m_GameReadyApi.OnLoadingAPIReady();

#endif

}

// Далее ваши уже методы

}

Создаем в папке Yandex папку Plugins, в которой создаем скрипт с таким вот расширением jslib. Назовем этот скрипт my.jslib

Создаем скрипт с таким вот расширением jslib
Создаем скрипт с таким вот расширением jslib
-6

mergeInto(LibraryManager.library, {

LoadingAPIReady: function(){
console.log("--------Podkluchaem API--------");
ysdk.features.LoadingAPI.ready();
console.log("--------Podkluchili API--------");
},

GameplayAPIStart: function(){
ysdk.features.GameplayAPI.start()
console.log("--------Start API--------");
},

GameplayAPIStop: function(){
ysdk.features.GameplayAPI.stop()
console.log("--------Stop API--------");
}

});

Главное, учтите в скрипте my.jslib не делайте лишних запятых или точек, он должен быть в точь-точь как у меня.

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

GameplayAPIStop: function(){

ysdk.features.GameplayAPI.stop()

console.log("--------Stop API--------");

}

} тут запятую не ставьте!!! Иначе будет ошибка, при билде игры. В общем смотрите внимательно, как сделан у меня скрипт, и добавляйте правильно кусок кода уже в ваш скрипт.

Собственно говоря, у тех, у кого нет паузы в игре, дальше статью могут не читать. Ну, а остальным нужно еще немного времени уделить статье, чтобы полностью подключить метод GameReadyApi.

Переходим в сцену с геймплеем, уровень игры. Тут уже по накатанной традиции.

Создаем пустышку с именем Help, в которой создаем пустышку с именем GameReadyApi. И на эту пустышку кидаем скрипт GameReadyApi.cs

Кидаем скрипт GameReadyApi.cs
Кидаем скрипт GameReadyApi.cs

Здесь же создаем пустышку с именем Pause. И на эту пустышку кидаем скрипт Pause.cs. Здесь все просто, когда пауза в игре вызываем метод ysdk.features.GameplayAPI.stop(), а когда снимаем с паузы вызываем метод ysdk.features.GameplayAPI.start().

Создаем пустышку с именем Pause
Создаем пустышку с именем Pause
-9

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class Pause : MonoBehaviour

{

public GameReadyApi m_GameReadyApi;

public float timing;

public bool isPaused;

private void Update()

{

Time.timeScale = timing;

if (isPaused == false)

{

timing = 1f;

#if UNITY_WEBGL && !UNITY_EDITOR

m_GameReadyApi.OnGameplayAPIStart();

#else

Debug.Log("GameplayAPIStart");

#endif

}

if (isPaused == true)

{

timing = 0;

#if UNITY_WEBGL && !UNITY_EDITOR

m_GameReadyApi.OnGameplayAPIStop();

#else

Debug.Log("GameplayAPIStop");

#endif

}

if (Input.GetKeyDown(KeyCode.Tab))

{

PauseButton();

}

}

public void PauseButton() // кнопка пауза

{

if (isPaused == false)

{

isPaused = true;

}

else if (isPaused == true)

{

isPaused = false;

}

if (isPaused == true)

{

timing = 0;

}

else if (isPaused == false)

{

timing = 1f;

}

}

public void ResumeButton() // кнопка продолжить

{

isPaused = false;

timing = 1f;

}

}

Не забудьте на сцене заполнить этот скрипт. Если есть у вас в игре кнопки пауза, продолжить, тогда можете на них кидать методы PauseButton() и ResumeButton().

Конечно для этого нужно еще в скрипте прописать public GameObject CanvasPause;

Когда вызываете паузу этот CanvasPause появляется, а когда выходите из паузы этот CanvasPause убирается. Я думаю, такое вы не раз уже делали, так что разберётесь.

Кнопка пауза
Кнопка пауза
 Кнопка продолжить
Кнопка продолжить

Надеюсь, статья вам была полезна!!! Если возникли вопросы, пишите в комментарии.

Как подключить Game Ready Apiпо этой статье, я реализовал в моей браузерной игре «Помоги коту Грею».

Ссылка на видео игры

https://dzen.ru/video/watch/6718b5dae8ddc9328ec5ab89

Информацию по моим играм можно посмотреть на сайте https://vk.com/public199787643