Отправка сообщения от единства webGL в Vue JS - PullRequest
1 голос
/ 18 октября 2019

это более общий вопрос! Я создал веб-страницу vue js, где я хотел добавить единство webgl. Кажется, что очень легко вызвать единую функцию из JavaScript. Но я не смог найти подходящее решение для отправки данных из моего единства webgl в Vue JS. В руководстве они рекомендуют создать что-то вроде библиотеки javascript, но я не думаю, что это имеет смысл в моем контексте: здесь

У кого-нибудь есть идеи, как управлять этим илиесли это вообще возможно? заранее спасибо:)

1 Ответ

0 голосов
/ 18 октября 2019

Поскольку вы можете отправлять данные из vue в unity, отправка данных из unity в javascript также проста.

  1. Создайте объект для представления данных, которые мы хотим отправить в JS.

    public class Person
    {
        public string Name{get;set;}
        public string PhoneNumber{get;set;}
    }
    
  2. Создайте файл UnityJavascipt.jslib и поместите его в папку плагинов.

  3. Начнем с простого JavaScriptвызывающая функция 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. Создайте внешнюю функцию PInvoke C #, которая, вызывая ее, вызывает функцию моста Javascipt, эта внешняя функция должна соответствовать Javascript SendToJavscriptфункция моста по имени, количеству параметров, типам параметров, порядку параметров.

    public static extern void SendToJavscript(string jsonData);

  5. Теперь отправка объекта person в 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));
    }
    
...