统一webgl和浏览器javascript通信

时间:2017-06-05 21:04:57

标签: javascript c# unity3d frontend unity-webgl

所以我在浏览器和统一webgl之间进行通信存在这个问题, 基本上我想要做的是使用来自正在播放webgl的视图中的javascript代码在Unity的场景中生成对象。换句话说,视图将有javascript代码在场景加载后创建游戏对象,不确定这是否可行。

我已阅读统一文档,但我还没有找到如何实现此处显示的代码的示例,或者它是否是我正在寻找的。

https://docs.unity3d.com/Manual/webgl-interactingwithbrowserscripting.html这就是我一直在阅读的内容,特别是代码可见性部分,但由于我从未使用前端那么多,我有点无能为力。

1 个答案:

答案 0 :(得分:0)

您可以做的是在您的Javascript代码中向Unity发送消息,但是您将让Unity完成有关实例化对象的肮脏工作。

这是我刚刚做的一个例子:

首先,您创建一个生成对象/预制件的C#脚本,如下所示:

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class MyObjectSpawner : MonoBehaviour {
    public Transform Prefab;

    public void Spawn(string data) {
        var instance = Instantiate(Prefab);

        // do what you like with your instantiated object and the data from the javascript here    
    }
}

现在您在场景中创建一个对象并将此脚本附加到该对象。请注意您为刚刚创建的游戏对象指定的名称,这在下一步中非常重要。现在,假设我们将其命名为“MyGameObject”。

最后一步是游戏页面容器中的javascript。在这个例子中,我创建了一个按钮,当它被单击时,会调用spawnUnityObject()方法。像这样:

HTML:

<button type="button" onclick="spawnUnityObject()">Press me</button>

使用Javascript:

function spawnUnityObject() {
    // game object in the scene, method name, method parameter
    SendMessage('MyGameObject', 'Spawn', 'Super string');
}

结果将是:当您单击html中的“按我”按钮时,游戏将生成一个对象,您可以使用“超级字符串”作为Spawn()方法中的数据。

我希望这会对你有所帮助。如果您需要更多详细信息,请与我们联系。