Короче не буду я дожидаться пока кто отреагирует. Это действительно так как я написал. Приложу свой скрипт, который я использую для 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");
}
Может эту тему переместить в раздел "Социальные сети"? кому то понадобится.