从unity webGL向嵌入它的vue页面发送消息

时间:2018-10-10 07:50:02

标签: javascript unity3d vuejs2 unity-webgl

我有一个Vue网页,其中包含统一的webgl。现在,我希望能够将消息(json和图像)从统一发送到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);


        },
    }
}

但是我还不太清楚如何使逆函数起作用。我看过this。但是当我尝试将函数放入方法中

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


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

它不会编译(它在LibraryManager.library中期望为,而不是。)。

我还发现this承诺两种通信方式,但仅记录一种通信方式。

有人知道该怎么做吗?

1 个答案:

答案 0 :(得分:-1)

您必须在})的末尾添加分号。您也不需要,末尾的},除非您现在没有其他功能,请删除该逗号。

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

C#方面:

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

有关this页的有关vue-unity插件的信息,请参见。

以下是一个基本的插件示例,用于在没有任何外部插件的情况下向Java插件发送数据或从中返回值:

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!");
}