现在,我在VueJs项目中有一个嵌入式Unity WebGl。通过Unity,我可以在我的asset / pugins文件夹中的jslib文件中调用一个函数。
我可以这样在自己的已挂载函数中统一调用我的函数(self = this):
self.$refs.graphics.message("GameObject", "set_height", heigth)
self.$refs.graphics.message("GameObject", "set_width", width)
这是我的.jslib文件中的代码。
var UnityJavascipt =
{
// This object can hold variables for you.
$JustAWebGLObject:
{
},
SendToJavscript: function (dataJsonPtr)
{
var name = Pointer_stringify(dataJsonPtr);
console.log(name);
},
};
autoAddDeps(UnityJavascipt , '$JustAWebGLObject');
mergeInto(LibraryManager.library, UnityJavascipt );
我可以从Vue调用SendToJavaScript(或以后添加的任何其他函数吗?
提前感谢!
是,您可以,但是请特别注意该块
$JustAWebGLObject:
{
},
将其视为C#中称为JustAWebGLObject
的类,您可以在其中定义函数,变量等。
$JustAWebGLObject:
{
ClassFunction: function()
{
},
},
您可以使用]从vue呼叫[C0
ClassFunction
对象JustAWebGLObject.ClassFunction();
之外的全局函数呢?
像您的JustAWebGLObject
这样的全局函数,在构建到全局SendToJavscript
时会统一编译它们,并在它们的下划线加UnityLoader.js
前缀,以便从Vue或任何其他javascript库甚至是另一个函数中调用此全局函数在同一个jslib文件中,您需要在其名称前添加_
简单呼叫_
但是,请注意,此函数接受来自C#的指向javascript的指针,但是如果另一个javascript函数调用它并将其传递给字符串,则它将作为字符串传递,因此您需要从调用函数句柄javascript,并来自C#,类似于
_SendToJavscript(somestring);
来自C# SendToJavascript: function(pointer,actualString)
{
var str = "";
if(actualString)
str = actualString;
else
str = Pointer_stringify(pointer);
},
来自Javascript SendToJavascript("hello",null); // First parameter will be sent as a pointer.