我有一个包含 unity WebGL 的 vue 网页。现在我希望能够将消息(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!");
},
})
}}
它不编译(它期望 a,而不是 LibraryManager.library 中的 .
我还发现这承诺双向沟通,但只能单向文档。
有人知道怎么做吗?
您必须在})
末尾添加一个分号。您也不需要}
末尾的,
,除非您在下面有另一个您目前没有的功能,因此请删除该逗号。
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!");
}