ZerglingRMG
@ZerglingRMG

Unity 3d и OK JS SDK, API_callback is not defined, что я делаю не так?

Всем привет!

Занимаемся переводом игры в WebGL и запуском в Одноклассниках. Билдим игру под WebGL, код index.html следующий:
<!DOCTYPE html>
<html lang="en-us">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>GameTitle</title>
    <script type="text/javascript" src="//api.ok.ru/js/fapi5.js" defer="defer"></script>
    <script src="Build/UnityLoader.js"></script>
    <script>
      var gameInstance = UnityLoader.instantiate("gameContainer", "Build/game.json");
    </script>
  </head>
  <body>
    <div id="gameContainer" style="width: 690px; height: 920px; margin: auto"></div>
  </body>
</html>


В C# коде делаю следующее:
Application.ExternalEval(
                "function API_callback(method, result, data) { }" +
                "FAPI.UI.showInvite(\"" + inviteText + "\");"
            );


После вызова получаю ошибку вида:
API_callback is not defined.

Где должна находится функция API_callback?
Неужели надо выкачать файл fapi5.js и в нем дописать недостающую функцию?

Спасибо! :)
  • Вопрос задан
  • 517 просмотров
Решения вопроса 1
ZerglingRMG
@ZerglingRMG Автор вопроса
Проблема решена. Достаточно было сделать замену
<script>
      var gameInstance = UnityLoader.instantiate("gameContainer", "Build/game.json");
    </script>


на
<script>
      var gameInstance = UnityLoader.instantiate("gameContainer", "Build/game.json");

      function API_callback(method, result, data)
      {
        var str = "{ \"method\": \"" + method + "\", \"result\": \"" + result + "\", \"data\": \"" + data + "\",}";
        console.log(str);

        gameInstance.SendMessage(*gameObjectName*, *methodName*, str);
      }
    </script>


Тогда результат выполнения метода будет передан gameObjectName посредство methodName в качестве строкового параметра. Потом эту строку можно рассматривать как JSON и обрабатывать результат запроса.

А в C# коде "function API_callback(method, result, data) { }" не имеет смысла, ее можно убрать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы