我有一个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承诺两种通信方式,但仅记录一种通信方式。
有人知道该怎么做吗?
答案 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!");
}