从Unity WebGL向Vue.js发送消息

4
这是一个更一般的问题!我创建了一个vue js网页,想要添加一个unity webgl。似乎很容易从javascript调用unityfunction。但是我找不到合适的解决方案来将数据从我的unity webgl发送到vue js。 在手册中,他们推荐创建类似于javascript库的东西,但我认为在我的情况下这没有意义:这里
有人有什么想法如何管理或是否可能实现吗? 提前感谢:)

你提供的链接在任何情况下都是有意义的,但不知道如何实现它又是另一回事。你可以发布与JavaScript交互的尝试以及遇到的任何错误/障碍,我们可能会提供帮助。 - ChoopTwisk
抱歉,我认为我没有说得够清楚。我可以在Unity中从.jslib文件调用函数。但是我这里有一个Vue js项目,如果我能够将数据从我的嵌入式Unity应用程序发送到Vue js,那就太好了。在这里,他们声称存在双向通信的可能性,但他们只解释了一种方式。所以我正在寻找另一种方式。在这里 - honey_cake
2个回答

2

既然你能够从Vue向Unity发送数据,那么从Unity向JavaScript发送数据也很容易。

  1. Create an object to represent data we want to send to JS.

    public class Person
    {
        public string Name{get;set;}
        public string PhoneNumber{get;set;}
    }
    
  2. Create your UnityJavascipt.jslib file and place it in a plugins folder.

  3. We'll start with a simple javascript bridge function called SendToJavscript

    var UnityJavascipt =
    {
        // This object can hold variables for you.
        $JustAWebGLObject:
        {
    
        },
    
        SendToJavscript: function (dataJsonPtr)
        {
            // string paramters from unity get delivered to javascript as pointers.
            // So we get the actual string from the pointer.
            var dataJson = Pointer_stringify(dataJsonPtr);
    
            // Now convert the string to a javascript object.
            var jsobject = JSON.parse(dataJson);
    
            // Now you have the jsObject, Vue can access it from here.
            // You can use Vue API from here too.
    
            // I'll just debug some variables.
            console.log(jsobject.Name); // Kevin
            console.log(jsobject.PhoneNumber); //  011244455
        },
    
    };
    autoAddDeps(UnityJavascipt , '$JustAWebGLObject');
    mergeInto(LibraryManager.library, UnityJavascipt );
    
  4. Create the extern PInvoke C# function, which by calling it, it calls the Javascipt bridge function, this extern function must match the Javascript SendToJavscript bridge function in name, parameters count, parameters types, parameters order.

    public static extern void SendToJavscript(string jsonData);

  5. Now sending a person object to javascript.

    private void SendToJavscript_Test()
    {
       Person person = new Person();
       person.Name = "Kevin";
       person.PhoneNumber = "011244455";
    
       // We need to convert the object to javascript, cause we can't send objects 
       directly between C# and javascript.
       // Our bridge function handles converting the object back to a javascript 
       object.
    
       SendToJavscript(JsonUtility.ToJson(person));
    }
    

非常感谢您的详细回答!但是当jslib文件在WebGL项目中时,我该如何从Vue中访问它呢? - honey_cake

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接