Отправка сообщения от единства webGL на страницу встраивания его - PullRequest
0 голосов
/ 10 октября 2018

У меня есть веб-страница vue, в которой содержится единство webgl.Теперь я хотел бы иметь возможность отправить сообщение (json и изображение) из Unity на страницу vue.

Я уже знаю, как сделать обратное (отправка строки из vue в unity)

import Vue from 'vue'
import Vuex from 'vuex'
import { mapState, mapMutations, mapActions } from 'vuex'
import Unity3dViewer from '../3d-viewer/3d-viewer';

export default {
   methods: {
        PlaceItem: function(){

            alert("placed object" )
            var data = Unity3dViewer.data();
            data.gameInstance.SendMessage("BrowserCommunication", "PlaceLight", Vue.prototype.$productID);


        },
    }
}

Однако я не могу понять, как заставить работать инверсию.Я посмотрел на это .Но когда я пытаюсь поместить функцию в методы

 export default {
   methods: {
     mergeInto(LibraryManager.library, {


      Hello: function () {
        window.alert("Hello, world!");
       },
  }) 
}}

Она не компилируется (она ожидает, а не. В LibraryManager.library).

Я также нашел это , который обещает двухстороннюю связь, но документирует только один путь.

Кто-нибудь знает, как это сделать?

1 Ответ

0 голосов
/ 10 октября 2018

Вы должны добавить точку с запятой в конце }).Вам также не понадобится , в конце }, если только у вас нет другой функции ниже той, которой у вас нет в данный момент, поэтому удалите эту запятую.

mergeInto(LibraryManager.library, {
  Hello: function(param) {
    alert(Pointer_stringify(str));
  }
});

Сторона C #:

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

См. эту страницу для получения информации о плагине vue-unity.

Ниже приведен базовый пример плагина для отправки или возврата значений в и из плагина Javascript без какого-либо внешнего плагина:

Javascript:

var PluginName = {

    //Function without argument 
    GetMessage: function(){
        var level = "Hello World!";

        var buffer = _malloc(lengthBytesUTF8(level) + 1);
        writeStringToMemory(level, buffer);
        return buffer;
    },

    //Function with argument 
    SendMessage: function(param){
        alert(Pointer_stringify(str));
    }
};
mergeInto(LibraryManager.library, PluginName);

C #:

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

[DllImport("__Internal")]
private static extern void SendMessage(string str);

void Start()
{
    string message = GetMessage();
    Debug.Log("Message: " + message);

    SendMessage("Hello World!");
}
...