Unity 17,18. WebGL , "SendMessage" (communic with web page)

Unity 17,18. WebGL , "SendMessage" (communic with web page)

Сообщение ikhtd 25 июн 2018, 18:19

Я правильно понимаю или ошибаюсь? В Unity 5.xx отсылал сообщения с javascript на веб странице, в WebGL билд этим методом - SendMessage("GameObj", "Method", "string");
Потом скомпилил WebGL в 17 и 18 unity и также передал просто c javascript на странице в билд через SendMessage и че то ответа не получил.
В 17 же изменилась структура билда, может поэтому он не передает теперь?
В доках к 17 и 18 вроде написано, что можно слать SendMessage если javascript вы включите как плагин в билд, а не на веб страницу. Типа что если вы будете слать из плагина включенного в билд, то он найдет этот билд, а просто с javascript расположенного на веб странице - то не найдет.
Или я неправильно понял и SendMessage работает как и раньше при комуникации с веб страницей?

no Application.ExternalCall() rabotaet normalno.
Скрытый текст:
Объективная реальность это - что в жизни не может быть более одного пути, который в свою очередь обусловлен максимальным существующим давлением. (второй _ttp://habrahabr.ru/post/202654/)
ikhtd
Старожил
 
Сообщения: 857
Зарегистрирован: 24 мар 2014, 12:20

Re: Unity 17,18. WebGL , "SendMessage" (communic with web page)

Сообщение ikhtd 25 июн 2018, 19:49

Короче не буду я дожидаться пока кто отреагирует. Это действительно так как я написал. Приложу свой скрипт, который я использую для unity 17,18 для фейсбука

В доках по этой теме они пишут про эту строчку
var gameInstance = UnityLoader.instantiate("gameContainer", "Build/build.json", {onProgress: UnityProgress});
и эта строчка используется в шаблоне билда WebGL, который по умолчанию строится в unity 17,18

Поэтому коментарим эту строчку в шаблоне и вставляем ее в наш скрипт ФБ, чтобы не использовать ее 2 раза.
Далее просто вызываем SendMessage с указанием у какого билда вызвать:
gameInstance.SendMessage("Getname", "sendfirst", fname);

Синтаксис:
Используется javascript

<!DOCTYPE html>
<html lang="en-us">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Unity WebGL Player | MonsterTruck:Begining</title>
    <link rel="shortcut icon" href="TemplateData/favicon.ico">
    <link rel="stylesheet" href="TemplateData/style.css">
    <script src="TemplateData/UnityProgress.js"></script>  
    <script src="Build/UnityLoader.js"></script>



    <script>
  //  var gameInstance = UnityLoader.instantiate("gameContainer", "Build/buildname.json", {onProgress: UnityProgress});
    </script>


  </head>

  <body>

<script>

 var gameInstance = UnityLoader.instantiate("gameContainer", "Build/buildname.json", {onProgress: UnityProgress});

var fid = "";
var fname = "";

                  window.fbAsyncInit = function() {
                        FB.init({
                          appId      : '487075681725307',
                          xfbml      : true,
                          version    : 'v3.0'
                        });

                        function onLogin(response) {
                          if (response.status == 'connected') {
                                FB.api('/me?fields=first_name,last_name', function(data) {
                                //  var welcomeBlock = document.getElementById('fb-welcome');
                                //  welcomeBlock.innerHTML = 'Hello, ' + data.first_name + '!';
                               

                                       fid=data.id;
                                       fname=data.first_name;

                                      //   alert(data.first_name);
                                                                           
                                });
                          }
                        }

                        FB.getLoginStatus(function(response) {
                          // Check login status on load, and if the user is
                          // already logged in, go directly to the welcome message.
                          if (response.status == 'connected') {
                                onLogin(response);
                          } else {
                                // Otherwise, show Login dialog first.
                                FB.login(function(response) {
                                  onLogin(response);
                                }, {scope: 'user_friends, email'});
                          }
                        });
                  };

                  (function(d, s, id){
                         var js, fjs = d.getElementsByTagName(s)[0];
                         if (d.getElementById(id)) {return;}
                         js = d.createElement(s); js.id = id;
                         js.src = "//connect.facebook.net/en_US/sdk.js";
                         fjs.parentNode.insertBefore(js, fjs);
                   }(document, 'script', 'facebook-jssdk'));

function getid(arg){
//alert("2" + fname);
   gameInstance.SendMessage("Getname", "sendfirst", fname);

//alert("3" + fname);
}

</script>

                <h1 id="fb-welcome"></h1>

    <div class="webgl-content">


      <div id="gameContainer" style="width: 860px; height: 600px"></div>
      <div class="footer">
       
        <div class="fullscreen" onclick="gameInstance.SetFullscreen(1)"></div>
       
      </div>
    </div>
  </body>
</html>

 






И еще, вызов екстернал колл надо сделать с задержкой. Потому что не успевает со старта. Не 3 секунды конечно а может пол секунды

Синтаксис:
Используется csharp
 IEnumerator Start () {
        yield return new WaitForSeconds(3);
        Application.ExternalCall( "getid", "The game says hello!" );

        print("cback");
    }
 


Может эту тему переместить в раздел "Социальные сети"? кому то понадобится.
Скрытый текст:
Объективная реальность это - что в жизни не может быть более одного пути, который в свою очередь обусловлен максимальным существующим давлением. (второй _ttp://habrahabr.ru/post/202654/)
ikhtd
Старожил
 
Сообщения: 857
Зарегистрирован: 24 мар 2014, 12:20


Вернуться в Социальные сети

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1