unity webgl与浏览器javascript通信

unity webgl and browser javascript communication

所以我在浏览器和 unity webgl 之间通信时遇到了这个问题, 基本上我想做的是从正在播放 webgl 的视图中使用 javascript 代码在 unity 的场景中生成对象。换句话说,视图将有 javascript 代码来在场景加载后创建游戏对象,尚不确定这是否可能。

我已经阅读了 unity 文档,但我还没有找到如何实现那里显示的代码的示例,或者它是否是我正在寻找的。

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

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

这是我刚做的例子:

首先,您创建一个 C# 脚本来生成您的 object/prefab,如下所示:

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 内的 "Press me" 按钮时,游戏将生成一个对象,您可以使用 "Super string" 作为 Spawn()方法。

希望对您有所帮助。如果您需要更多详细信息,请告诉我。