Как получить информацию о странице изнутри Unity? - PullRequest
0 голосов
/ 17 января 2019

Мне нужно связать Unity WebAssemly со страницей в обоих направлениях.

Вот как я выполняю функции Unity со страницы:

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

    function unityObjectFun(index)
    {
        gameInstance.SendMessage ("ObjectInstance", "objectFunctionName", index);
    }
</script>

<a onclick="unityObjectFun(1)">invoke</a>

<div class="webgl-content">
    <div id="gameContainer" myValue="need this to read from Unity"></div>
</div>

Но как я могу сделать наоборот? Можно ли получить myValue из Unity.

В качестве альтернативы возможно ли уведомить страницу о том, что Unity загрузил сцену и начал ее воспроизведение, чтобы я мог отправить ей myValue?

1 Ответ

0 голосов
/ 17 января 2019

Для выполнения любого кода JavaScript на странице из Unity WebAssembly требуется две вещи:

  1. Создайте код Javascript как плагин.
  2. Импорт кода в скрипт Unity.

Вся процедура описана в этом руководстве: https://docs.unity3d.com/Manual/webgl-interactingwithbrowserscripting.html.

Код плагина должен находиться в пути Assets / Plugins / pluginname.jslib (расширение важно) и иметь схожую структуру:

mergeInto(LibraryManager.library, {
    Hello: function () {
        window.alert("Hello, world!");
    },
    HelloReturn: function () {
        return "Hello, world!";
    }
}

Для его использования требуется импорт:

using System.Runtime.InteropServices;

public class NewBehaviourScript : MonoBehaviour {

    [DllImport("__Internal")]
    private static extern void Hello();

    [DllImport("__Internal")]
    private static extern string HelloReturn();

    void Start() {
        Hello();
        Debug.log(HelloReturn());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...